반응형
Q. TOP N 구문을 사용하는 것이 SET ROWCOUNT N을 사용하는 것보다 쿼리에서 일정 개수의 행을 반환하는 속도가 더 빠릅니까?
A. 적절한 인덱스를 사용하면 TOP N 구문과 SET ROWCOUNT N 문 모두 빠릅니다. 그러나 힙에서 정렬하지 않고 입력할 경우 TOP N이 더 빠릅니다. 입력한 사항이 정렬되지 않으면 TOP N 연산자는 마지막 행만 대체하는 정렬된 내부의 임시 테이블을 사용합니다. 만약 입력한 사항이 거의 정렬되어 있으면, TOP N 엔진은 마지막 행을 몇 번씩 삭제하거나 삽입해야 합니다. 거의 정렬된다는 것은 초기에 채우기를 위해 순서대로 삽입되어 있어 업데이트나 삭제, 포인터 전달 등이 많지 않은 힙을 처리한다는 것을 의미합니다.
거의 정렬된 힙을 정렬하는 것이 큰 테이블을 정렬하는 것보다 효율적입니다. TOP N을 사용하여 행 수는 동일하지만 순서대로 삽입하지 않은 테이블을 정렬하는 테스트에서 TOP N은 별로 효과적이지 못했습니다. 보통, I/O 시간은 인덱스가 있는 경우와 없는 경우 동일합니다. 그러나 인덱스가 없으면 SQL Server는 전체 테이블을 스캔해야 합니다. 프로세서 시간 및 경과된 시간을 보면 거의 정렬된 힙의 효율성을 확인할 수 있습니다. SQL Server는 어느 방법으로든 행을 모두 읽어야 하기 때문에 I/O 시간은 동일합니다.
[출처] TOP N 구문과 SET ROWCOUNT N|작성자 진카자마
반응형