시간 통계

SQL Server에서 쿼리 성능 향상하기

Dean Smith

Founder, Atamai Analytics

SQL Server Management Studio

 

SQL Server Management Studio 시작 화면

SQL Server에서 쿼리 성능 향상하기

SSMS에서 STATISTICS TIME

SELECT UNStatisticalRegion, 
        CountryName,
        Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName 
        FROM Cities)
            AND Capital IN 
                (SELECT CityName 
                    FROM Cities 
                    WHERE Pop2017 > 1000000);

STATISTICS TIME - 명령은 쿼리를 구문 분석, 컴파일, 실행하는 데 걸린 밀리초를 보고합니다.

SQL Server parse and compile time: 
   CPU time = 16 ms, elapsed time = 21 ms.

(88 rows affected)

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
SQL Server에서 쿼리 성능 향상하기

SQL Server 실행 시간

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
  • CPU 시간: 서버 프로세서가 쿼리를 처리하는 데 걸린 시간
  • 경과 시간: 쿼리 전체 소요 시간
SQL Server에서 쿼리 성능 향상하기

예시: 쿼리 1

SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName -- 1st sub-query
        FROM Cities) 
            AND Capital IN 
                (SELECT CityName -- 2nd sub-query
                 FROM Cities 
                 WHERE Pop2017 > 1000000); 
SQL Server에서 쿼리 성능 향상하기

예시: 쿼리 1

SET STATISTICS TIME ON
SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName -- 1st sub-query
        FROM Cities) 
            AND Capital IN 
                (SELECT CityName -- 2nd sub-query
                 FROM Cities 
                 WHERE Pop2017 > 1000000); 
SQL Server Execution Times:
   CPU time = 391 ms,  elapsed time = 381 ms.
SQL Server에서 쿼리 성능 향상하기

예시: 쿼리 2

SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);


SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
SQL Server에서 쿼리 성능 향상하기

예시: 쿼리 2

SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);
SET STATISTICS TIME OFF
SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
SQL Server에서 쿼리 성능 향상하기

쿼리 비교

  • 두 개의 서브쿼리를 포함한 첫 번째 쿼리
SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName 
        FROM Cities)
            AND Capital IN 
                (SELECT CityName 
                 FROM Cities 
                 WHERE Pop2017 > 1000000);
SQL Server Execution Times:
   CPU time = 391 ms,  elapsed time = 381 ms.
  • EXISTS를 사용한 두 번째 쿼리
SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);
SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
SQL Server에서 쿼리 성능 향상하기

경과 시간 vs. CPU 시간

경과 시간

  • 쿼리 시간 통계를 분석할 때 변동될 수 있음
  • 가장 빠른 쿼리를 측정하는 데 가장 적합함

CPU 시간

  • 쿼리 시간 통계 분석 시 변동이 적어야 함
  • 서버가 병렬 처리 중이면 유용하지 않을 수 있음
SQL Server에서 쿼리 성능 향상하기

평균 내기

  • 한 번의 측정에 의존하지 말고 평균을 구하십시오.
elapsed time = 2032 ms.

elapsed time = 2060 ms.

elapsed time = 1915 ms.

elapsed time = 4009 ms.

elapsed time = 3511 ms.

Average elapsed time = 2705 ms.
SQL Server에서 쿼리 성능 향상하기

Ayo berlatih!

SQL Server에서 쿼리 성능 향상하기

Preparing Video For Download...