สถิติเวลา

การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

Dean Smith

Founder, Atamai Analytics

SQL Server Management Studio

 

หน้าจอเริ่มต้น SQL Server Management Studio

การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

STATISTICS TIME ใน SSMS

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 Execution Times

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
  • CPU time: เวลาที่โปรเซสเซอร์ของเซิร์ฟเวอร์ใช้ในการประมวลผลคิวรี
  • Elapsed time: ระยะเวลารวมทั้งหมดของคิวรี
การปรับปรุงประสิทธิภาพคิวรีใน 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

เปรียบเทียบคิวรี

  • คิวรีแรกที่มีสอง sub-query
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

Elapsed time กับ CPU time

Elapsed time

  • อาจมีความแปรปรวนเมื่อวิเคราะห์สถิติเวลาของคิวรี
  • เป็นตัวชี้วัดที่ดีที่สุดสำหรับหาคิวรีที่รันเร็วที่สุด

CPU time

  • ควรมีความแปรปรวนน้อยเมื่อวิเคราะห์สถิติเวลาของคิวรี
  • อาจไม่มีประโยชน์หากโปรเซสเซอร์ของเซิร์ฟเวอร์ทำงานแบบขนาน
การปรับปรุงประสิทธิภาพคิวรีใน 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

มาฝึกกันเถอะ!

การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

Preparing Video For Download...