programing

MySQL Views - 사용 시기 및 사용하지 않는 시기

muds 2023. 10. 23. 22:08
반응형

MySQL Views - 사용 시기 및 사용하지 않는 시기

mysql 인증 가이드에서는 보기를 다음 용도로 사용할 수 있다고 제안합니다.

  • 계산을 포함할 수 있는 요약 만들기
  • WHERE 절이 있는 행 집합 선택, 관련 없는 정보 숨기기
  • 가입 또는 조합의 결과
  • 다른 응용프로그램을 수용하기 위해 원래 테이블의 스키마를 보존하는 뷰를 통해 기본 테이블에 대한 변경 허용

가지 다른 테이블 데이터에 대한 검색을 구현하는 방법은 무엇입니까?

그리고 mysql views는 인덱싱과 좋은 친구가 아니기 때문에 작동하지 않는 것이 맞을지도 모릅니다.그래도.상점 테이블에 검색할 것이 있습니까?

뷰가 인덱싱에서 잘 작동하지 않는다는 것을 알게 되었는데, 편리하게 제공할 수 있도록 성능 면에서 큰 성공을 거둘 수 있을까요?

보기는 단순히 서버에 영구적으로 저장된 SQL 쿼리로 생각할 수 있습니다.쿼리가 최적화하는 인덱스는 무엇이든 사용됩니다.그런 의미에서 SQL 쿼리나 뷰 사이에는 차이가 없습니다.실제 SQL 쿼리보다 성능에 부정적인 영향을 주지 않습니다.서버에 저장되어 있고 실행 시 평가할 필요가 없기 때문에 실제로는 더 빠릅니다.

이러한 추가적인 이점을 제공합니다.

  • 재사용 가능성
  • 최적화를 위한 단일 원천

인덱싱 뷰에 대한 이 mysql-form-thread는 mysql 뷰가 실제로 무엇인지에 대한 많은 통찰력을 제공합니다.

몇 가지 핵심 사항:

  • 보기는 실제로 저장된 선택 문에 지나지 않습니다.
  • 뷰의 데이터는 뷰에서 참조하는 테이블의 데이터입니다.
  • 뷰에 인덱스를 생성하면 현재 버전에서 작동하지 않습니다.
  • 병합 알고리즘을 사용하는 경우 기본 테이블의 인덱스가 사용됩니다.
  • 그러나 기본 지수는 보이지 않습니다.보기에 DESCROMPECT는 색인화된 열을 표시하지 않습니다.

MySQL 공식 문서에 따르면 MySQL 보기는 호출 시 결과 집합을 생성하는 저장된 쿼리입니다.

데이터베이스 보기는 가상 테이블 또는 논리 테이블에 불과합니다(일반적으로 조인과 함께 SELECT 쿼리로 구성됨).데이터베이스 보기는 행과 열로 구성된 데이터베이스 테이블과 유사하므로 데이터를 조회할 수 있습니다.

뷰는 다음의 경우에 사용해야 합니다.

  • 복잡한 쿼리 단순화(IF ELSE, JOIN 등) 또는 트리거 작업 등)
  • 보안 계층을 추가하고 데이터 액세스를 제한 또는 제한(뷰는 가상 테이블에 불과하므로 특정 DB 사용자 집합에 읽기 전용으로 설정하고 INSERT를 제한할 수 있음)
  • 하위 호환성 및 쿼리 재사용성
  • 계산된 열로 작업 중입니다.계산된 열은 DB 스키마가 잘못된 설계이므로 DB 테이블에 있으면 안 됩니다.

뷰는 다음과 같은 경우 사용해서는 안 됩니다.

  • 연관표가 잠정적이거나 빈번한 구조변경을 당합니다.

http://www.mysqltutorial.org/introduction-sql-views.aspx 에 의하면.

데이터베이스 테이블에는 계산된 열이 없어야 하지만 데이터베이스 보기에는 계산된 열이 없어야 합니다.

저는 총계, 개수 등을 계산해야 할 때 뷰를 사용하는 편입니다.

도움이 되길 바랍니다!

mysql replicator와 잘 작동하지 않는 또 하나의 부정적인 측면은 마스터가 슬레이브보다 조금 뒤쳐지는 원인이 되고 있습니다.

http://bugs.mysql.com/bug.php?id=30998

언급URL : https://stackoverflow.com/questions/1483580/mysql-views-when-to-use-when-not-to

반응형