>데이터 베이스 >MySQL 튜토리얼 >WHERE 절이 개수 쿼리에 영향을 미칠 때 보기 성능을 최적화하는 방법은 무엇입니까?

WHERE 절이 개수 쿼리에 영향을 미칠 때 보기 성능을 최적화하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-24 05:46:301003검색

How to Optimize View Performance When WHERE Clause Impacts Count Queries?

MySQL 뷰 성능 최적화

질문

특정 상태의 사용자 수를 계산하는 쿼리에서 직접 쿼리에 비해 뷰에서 더 높은 비용이 표시됩니다. 테이블 스캔. 뷰에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.