뷰 쿼리에 인덱스를 활용하도록 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!