성능을 향상시키기 위해 MySQL 보기 쿼리에서 인덱스를 어떻게 활용할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-11-10 10:32:02
원래의
386명이 탐색했습니다.

How can I leverage indexes in MySQL view queries to improve performance?

MySQL 보기 쿼리에서 인덱스 사용

문제:

성능 문제가 발생했습니다. 기본 테이블의 인덱스가 뷰 기반에서 사용되지 않기 때문에 MySQL 뷰를 사용합니다.

原因:

MySQL은 외부 쿼리의 필터 조건자(예: WHERE luck_in = 2006)를 뷰 쿼리로 푸시하지 않습니다. 대신, 뷰 결과를 중간 임시 테이블로 구체화하고 이 테이블에 조건자를 적용합니다. 결과적으로 원본 테이블의 인덱스를 효과적으로 사용할 수 없습니다.

해결 방법:

뷰 쿼리에서 인덱스를 활용하려면 다음을 수행할 수 있는 적합한 인덱스를 생성해야 합니다. 보기 쿼리에서 사용됩니다. 이 경우 뷰 쿼리에서 참조하는 모든 컬럼을 포함하는 커버링 인덱스를 권장합니다.

최적 인덱스:

CREATE INDEX highscores_IX3 ON highscores(player, done_in, 점수)

왜요? 작동:

  • 동등 조건부 WHERE player = 24로 인해 player 열이 선행 열로 사용됩니다.
  • whenn_in 열은 다음으로 인해 두 번째 선행 열입니다. GROUP BY luck_in.
  • 점수 열을 포함하면 인덱스가 포함 인덱스가 되어 MySQL이 쿼리를 충족할 수 있습니다. 데이터 페이지에 액세스하지 않고 인덱스 페이지에서.

추가 고려 사항:

  • 뷰 쿼리의 실행 계획을 독립형 쿼리와 비교할 수 있습니다. 성능 차이를 확인하기 위한 뷰가 없습니다.
  • MySQL에서 뷰를 사용하는 것이 반드시 해로운 것은 아니지만, 성능 차이를 이해하는 것이 중요합니다. MySQL은 성능 문제를 방지하기 위해 보기 쿼리를 처리합니다.

위 내용은 성능을 향상시키기 위해 MySQL 보기 쿼리에서 인덱스를 어떻게 활용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿