การกรองด้วย WHERE

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

Dean Smith

Founder, Atamai Analytics

WHERE ทำงานอย่างไร

SELECT *
FROM PlayerStats
WHERE Position = 'SG'

ตาราง PlayerStats

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

WHERE ทำงานอย่างไร

SELECT *
FROM PlayerStats
WHERE Position = 'SG'

ตาราง PlayerStats หลังกรองข้อมูล

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

ลำดับการประมวลผลของ WHERE

SELECT PlayerName, 
      Team, 
      (DRebound+ORebound) AS TotalRebounds
FROM PlayerStats
WHERE TotalRebounds >= 1000
ORDER BY TotalRebounds DESC;
  • WHERE ถูกประมวลผลก่อน SELECT
-- ERROR
Invalid column name 'TotalRebounds'.
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

การใช้ Sub-query

SELECT PlayerName, 
       Team, 
       TotalRebounds
FROM
     -- Start of sub-query tr
    (SELECT PlayerName, Team, 
             (DRebound+ORebound) AS TotalRebounds
     FROM PlayerStats) tr
WHERE TotalRebounds >= 1000 -- created in the sub-query
ORDER BY TotalRebounds DESC;
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

การใช้ Sub-query

SELECT PlayerName, 
       Team, 
       TotalRebounds
FROM
     -- Start of sub-query tr
    (SELECT PlayerName, Team, 
             (DRebound+ORebound) AS TotalRebounds
     FROM PlayerStats) tr
WHERE TotalRebounds >= 1000 -- created in the sub-query
ORDER BY TotalRebounds DESC;
PlayerName Team TotalRebounds
Andre Drummond DET 1247
DeAndre Jordan LAC 1171
Karl-Anthony Towns MIN 1012
Dwight Howard CHO 1012
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

การคำนวณบนคอลัมน์

SELECT PlayerName, 
       Team, 
       (DRebound+ORebound) AS TotalRebounds
FROM PlayerStats
WHERE (DRebound+ORebound) >= 1000
ORDER BY TotalRebounds DESC;
  • การคำนวณบนคอลัมน์ในเงื่อนไขกรองของ WHERE อาจเพิ่มเวลาคิวรี
PlayerName Team TotalRebounds
Andre Drummond DET 1247
DeAndre Jordan LAC 1171
Karl-Anthony Towns MIN 1012
Dwight Howard CHO 1012
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

ฟังก์ชันบนคอลัมน์

SELECT PlayerName, College, DraftYear 
FROM Players
WHERE UPPER(LEFT(College,7)) = 'GEORGIA'; 
-- unnecessary use of functions 
-- on a filtering column
  • การใช้ฟังก์ชันกับคอลัมน์ในเงื่อนไขกรองของ WHERE อาจเพิ่มเวลาคิวรี
PlayerName College DraftYear
Damien Wilkins Georgia
Derrick Favors Georgia Tech 2010
Iman Shumpert Georgia Tech 2011
R.J. Hunter Georgia State 2015
... ... ...
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

WHERE แบบเรียบง่าย

SELECT PlayerName, College, DraftYear 
FROM Players 
        -- No calculation or function
WHERE College like 'Georgia%'; 
PlayerName College DraftYear
Damien Wilkins Georgia
Derrick Favors Georgia Tech 2010
Iman Shumpert Georgia Tech 2011
R.J. Hunter Georgia State 2015
... ... ...
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

สรุป

  • WHERE ถูกประมวลผลก่อน SELECT
  • การคำนวณบนคอลัมน์ในเงื่อนไขกรองของ WHERE อาจเพิ่มเวลาคิวรี
  • การใช้ฟังก์ชันกับคอลัมน์ในเงื่อนไขกรองของ WHERE อาจเพิ่มเวลาคิวรี
การปรับปรุงประสิทธิภาพคิวรีใน SQL Server

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

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

Preparing Video For Download...