MySQL의 느린 "SELECT COUNT(*)" 쿼리 최적화
대규모 테이블을 쿼리할 때 WHERE 절. 범위 기준을 사용하는 "SELECT COUNT(*)" 쿼리에 시간이 너무 오래 걸리는 구체적인 사례를 분석해 보겠습니다.
"EXPLAIN"에서 제공하는 설명을 보면 범위 스캔이 발생하고 있음을 알 수 있습니다. 그러나 전체 개수와 필터링된 개수 사이의 성능 불일치는 여전히 설명되지 않습니다.
테이블 정의를 검토한 결과 "change_event_id" 열이 클러스터 형식으로 저장되는 기본 키 역할을 한다는 것을 알 수 있습니다. 이는 기본 키 값이 동일한 디스크 페이지에 데이터와 함께 저장된다는 의미입니다. 결과적으로 기본 키에 대한 범위 스캔을 수행하려면 모든 데이터 페이지를 읽어야 합니다.
성능을 향상하려면 다음 전략을 고려하십시오.
또한 "change_event_id" 열이 "bigint unsigned"로 수정되는 경우 이를 권장합니다. 0부터 증가합니다. 이렇게 하면 오버플로 없이 더 큰 값을 저장할 수 있습니다.
이러한 최적화를 구현하면 범위 기준을 사용하는 "SELECT COUNT(*)" 쿼리의 성능이 크게 향상되어 전체 카운트와 비슷해집니다. .
위 내용은 MySQL의 기본 키에 대한 범위 검색과 관련된 느린 \'SELECT COUNT(*)\' 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!