MySQL이 뷰 쿼리에 인덱스를 사용하도록 하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-11-12 01:19:02
원래의
689명이 탐색했습니다.

How Can I Get MySQL to Use Indices for View Queries?

뷰 쿼리에 인덱스를 활용하도록 MySQL 가져오기

쿼리: MySQL이 인덱스를 활용하도록 장려하는 방법 보기를 위해 쿼리?

답변: MySQL에서 뷰를 사용하는 것이 이상적이지 않을 수 있지만 MySQL은 적절한 인덱스 구조가 제공되면 뷰 쿼리에 인덱스를 활용할 수 있습니다.

자세히 설명:

MySQL의 뷰 쿼리는 최적화 프로그램이 쿼리를 수행하지 않기 때문에 다른 데이터베이스와 구별됩니다. 외부 쿼리에서 뷰 쿼리로 조건자를 "푸시"합니다. 이 경우 외부 쿼리는 finally_in을 필터링하지만 MySQL은 뷰 쿼리 실행 시 이 필터를 적용하지 않습니다.

결과적으로 뷰 쿼리는 별도로 처리되어 임시 테이블(파생 테이블)이 생성됩니다. . 외부 쿼리가 실행되면 파생된 테이블을 행 소스로 사용하고, 그런 다음 발생된_in = 2006 조건자를 평가합니다.

성능을 향상시키기 위해 포함 인덱스를 정의할 수 있습니다.

CREATE INDEX highscores_IX3 ON highscores (player, happened_in, score)
로그인 후 복사

이 인덱스에는 뷰 쿼리에서 참조된 모든 열이 포함되며, 플레이어가 선행 열(동등 조건자)이고 그 뒤에 발생된_in(GROUP BY)이 옵니다. 점수를 포함하면 인덱스가 포함 인덱스가 되어 MySQL이 인덱스에서만 필요한 모든 데이터를 검색할 수 있습니다.

또는 파생 테이블을 활용하지 않는 독립형 쿼리를 사용하는 것이 어떤 경우에는 더 나은 성능을 제공할 수 있습니다. :

SELECT player, MAX(score) AS highest_score, happened_in
FROM highscores
WHERE player = 24 AND happened_in = 2006
GROUP BY player, happened_in
로그인 후 복사

이러한 수정과 적절한 커버링 인덱스를 통해 MySQL은 뷰 쿼리를 최적화하고 사용 가능한 리소스를 활용하여 성능을 크게 향상시킬 수 있습니다. 색인.

위 내용은 MySQL이 뷰 쿼리에 인덱스를 사용하도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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