MSSQL Server에서 다른 통계로 동일한 레코드를 반환하는 두 개의 쿼리를 실행했습니다. 사람이 하나가 다음과 같은 통계 목적을보고 사용하는 것이 좋습니다있는 나를 인도 할 수쿼리 성능 비교
쿼리 1 :
SQL Server parse and compile time:
CPU time = 359 ms, elapsed time = 602 ms.
(5517 row(s) affected)
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table1'. Scan count 5972, logical reads 37742, physical reads 87, read-ahead reads 32, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table2'. Scan count 1, logical reads 3061, physical reads 2, read-ahead reads 3084, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table3'. Scan count 1, logical reads 4171, physical reads 2, read-ahead reads 4210, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table4'. Scan count 1, logical reads 843, physical reads 3, read-ahead reads 874, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table5'. Scan count 1, logical reads 6899, physical reads 2, read-ahead reads 6898, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table6'. Scan count 1, logical reads 3176, physical reads 2, read-ahead reads 3207, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table7'. Scan count 2, logical reads 35, physical reads 2, read-ahead reads 71, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table8'. Scan count 1, logical reads 2, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 484 ms, elapsed time = 16415 ms.
질의 2 :
SQL Server parse and compile time:
CPU time = 312 ms, elapsed time = 618 ms.
(5517 row(s) affected)
Table 'Worktable'. Scan count 11655, logical reads 807704, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table8'. Scan count 0, logical reads 11452, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table1'. Scan count 5976, logical reads 24654, physical reads 15, read-ahead reads 3348, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table2'. Scan count 1, logical reads 3061, physical reads 2, read-ahead reads 3084, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table3'. Scan count 1, logical reads 4171, physical reads 2, read-ahead reads 4210, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table4'. Scan count 1, logical reads 843, physical reads 3, read-ahead reads 874, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table5'. Scan count 1, logical reads 6899, physical reads 2, read-ahead reads 6898, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table6'. Scan count 1, logical reads 3176, physical reads 2, read-ahead reads 3207, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table7'. Scan count 2, logical reads 35, physical reads 2, read-ahead reads 71, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 1342 ms, elapsed time = 15448 ms.
여기서 표 7 및 8은 찾아보기 테이블이며 다른 테이블은 트랜잭션 테이블입니다. 1/QUERY2
**SELECT NODE**
Cached Plan Size - 200/168 KB
Memory Grant - 32088/38816
Estimated Subtree Cost - 26.1473/24.4291
Estimated No. of Rows - 104.17/13848.8
**LAST NODE/OPERATOR**
Estimated Operator Cost - 0.0125/0.8858
Estimated Subtree Cost - 26.1473/24.4291
Estimated CPU Cost - 0.0011897/0.874608
Estimated I/O Cost - 0.00112613/0.0112613
Estimated No. of Rows - 104.17/13848.8
Actual No. of Rows - 5517/5517
은 거의 같지만 통계는 다른 매개 변수에 대해 크게 달라질 수 있습니다. 우리는 실제 실행 계획에 더 관심이 있습니다. –
테이블 스키마를 사용하여 쿼리 및 통계를 생성하여 유사한 시나리오를 생성하고 SQL Server 버전 및 매개 변수를 알려주십시오. –
쿼리 계획이 훨씬 유용합니다. 논리적 읽기는 CPU 사용량에 중복되므로 대부분 쓸모가 없습니다. – usr