집 >데이터 베이스 >MySQL 튜토리얼 >WHERE 절이 개수 쿼리에 영향을 미칠 때 보기 성능을 최적화하는 방법은 무엇입니까?
특정 상태의 사용자 수를 계산하는 쿼리에서 직접 쿼리에 비해 뷰에서 더 높은 비용이 표시됩니다. 테이블 스캔. 뷰에서 WHERE 절은 어떻게 작동하며, 이 성능 문제는 어떻게 해결할 수 있나요?
뷰에서 WHERE 절의 동작은 사용된 뷰 알고리즘에 따라 결정됩니다.
일반적으로 뷰에서 WHERE 절은 뷰가 기본 테이블에서 모든 행을 검색한 후 적용됩니다. 이 알고리즘은 유혹이라고 알려져 있습니다. 그러나 이 경우 temptable 알고리즘은 사용되지 않았습니다. 대신 merge 알고리즘이 사용되었습니다.
병합 알고리즘은 대부분의 경우 더 효율적이지만 뷰에 집계 함수(예: COUNT()) 또는 GROUP BY 절이 포함된 경우 지원되지 않습니다. .
이 문제를 해결하려면 뷰 정의를 수정하여 COUNT(*)를 COUNT(DISTINCT 상태)로 바꾸면 됩니다. 이렇게 하면 MySQL에서 성능을 크게 향상시킬 수 있는 병합 알고리즘을 사용하게 됩니다.
<code class="sql">CREATE OR REPLACE VIEW vw_users AS SELECT state, COUNT(DISTINCT state) AS cnt FROM users; EXPLAIN SELECT cnt FROM vw_users WHERE state = 'ca';</code>
위 내용은 WHERE 절이 개수 쿼리에 영향을 미칠 때 보기 성능을 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!