0

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 
+0

은 거의 같지만 통계는 다른 매개 변수에 대해 크게 달라질 수 있습니다. 우리는 실제 실행 계획에 더 관심이 있습니다. –

+0

테이블 스키마를 사용하여 쿼리 및 통계를 생성하여 유사한 시나리오를 생성하고 SQL Server 버전 및 매개 변수를 알려주십시오. –

+0

쿼리 계획이 훨씬 유용합니다. 논리적 읽기는 CPU 사용량에 중복되므로 대부분 쓸모가 없습니다. – usr

답변

0

음, 꽤 오랫동안 기다리고 다른 성능 통계를 기반으로 두 쿼리를 분석 한 후, 내가 찾을 수 없습니다 쿼리 - 특성 : FORMAT 다릅니다 - 실행 계획에서

서로를 사용하는 방법. 마지막으로 두 개의 쿼리를 모두 55K 레코드의 데이터 집합으로 실행했으며 쿼리 1은 13 초 만에 결과를 반환했으며 쿼리 2는 약 18 초가 걸렸습니다. 쿼리 1로 이동하기 위해 벤치마킹으로 사용했습니다.

+0

당신이 쿼리를위한 매개 변수를 변경한다면 어떻게 생각하십니까? –

+0

제 경우에는 하나의 쿼리 매개 변수 만 있습니다.이 매개 변수는 시스템을 통해 입력되므로 변경할 필요가 없습니다. 따라서 동일한 매개 변수를 사용하여 성능에 대해 우려했습니다. – sMajeed