SQL Count(*) 성능: 느린 이유와 개선 방법
큰 테이블을 다룰 때는 다음 사항을 이해하는 것이 중요합니다. 'COUNT()'와 같은 특정 쿼리가 성능에 미치는 영향. 이 문서에서는 간단한 'COUNT()' 쿼리가 해당 매개변수에 따라 상당한 성능 차이를 초래할 수 있는 이유를 살펴봅니다.
주어진 예에서 쿼리 'if (select count() from BookChapters) = 0'은 SQL Server가 '존재하는 경우(BookChapters에서 선택)'로 최적화하기 때문에 빠르게 실행됩니다. 이 최적화된 버전은 모든 행을 계산하는 대신 단일 행만 검색합니다.
그러나 'if (select count() from BookChapters) = 1' 및 'if(select count() ) BookChapters에서) > 1'은 SQL Server가 다른 논리를 사용하기 때문에 수행 속도가 느려집니다. 테이블에 비클러스터형 인덱스가 없으면 SQL Server는 'COUNT(*)' 작업에 가장 좁은 비클러스터형 인덱스를 사용합니다. 비클러스터형 인덱스가 없으면 전체 테이블을 스캔해야 하므로 대규모 데이터 세트의 경우 시간이 많이 걸릴 수 있습니다.
카운트(*) 속도 최적화
개선하려면 'COUNT(*)' 쿼리의 성능을 고려하려면 다음 전략을 고려하세요.
SELECT OBJECT_NAME(i.id) [Table_Name], i.rowcnt [Row_Count] FROM sys.sysindexes i WITH (NOLOCK) WHERE i.indid in (0,1) ORDER BY i.rowcnt desc
SELECT OBJECT_NAME(i.id) [Table_Name], i.rows [Row_Count] FROM sysindexes i (NOLOCK) WHERE i.indid in (0,1) ORDER BY i.rows desc
이러한 기술을 활용하면 특히 대규모 쿼리에서 'COUNT(*)' 쿼리의 실행 시간을 크게 단축할 수 있습니다. 데이터 세트.
위 내용은 SQL COUNT(*)가 느린 이유는 무엇이며 속도를 높이는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!