집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 WHERE 절이 포함된 COUNT(*) 쿼리가 느린 이유는 무엇입니까?
Where 절을 사용하는 MySQL의 느린 COUNT(*) 쿼리
COUNT(*)와 관련된 느린 MySQL 쿼리를 처리할 때 기본 쿼리 이해 요인이 가장 중요합니다. 이 특별한 경우에는 쿼리 자체나 EXPLAIN 문에서 긴 실행 시간이 즉시 드러나지 않습니다.
문제 이해
문제의 테이블인change_event, change_event_id 열에 클러스터된 기본 키가 있습니다. InnoDB에서는 별도의 인덱스 페이지에 상주하는 비클러스터형 인덱스와 달리 클러스터형 기본 키가 데이터 페이지의 데이터와 함께 저장됩니다.
클러스터형 기본 키에 대한 범위 스캔 문제
제시된 쿼리는 테이블의 상당 부분을 스캔해야 하는 클러스터형 기본 키에 대해 범위 스캔을 수행합니다. 데이터 페이지가 물리적으로 정렬된 순서로 저장되지 않아 추가 I/O 작업이 발생하므로 시간이 많이 걸릴 수 있습니다.
잠재적 솔루션
이를 최적화하려면 쿼리를 수행하려면 다음 전략 중 하나 또는 둘 다를 구현하는 것이 좋습니다.
추가 참고:
change_event_id 열이 실제로 자동 증가 열인 경우 BIGINT UNSIGNED로 수정하는 것이 좋습니다. 제로부터 시작합니다. 이렇게 하면 부호 있는 정수 오버플로와 관련된 잠재적인 문제를 방지할 수 있습니다.
위 내용은 MySQL에서 WHERE 절이 포함된 COUNT(*) 쿼리가 느린 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!