WHERE ile filtreleme

SQL Server'da Sorgu Performansını İyileştirme

Dean Smith

Founder, Atamai Analytics

WHERE nasıl çalışır

SELECT *
FROM PlayerStats
WHERE Position = 'SG'

PlayerStats Tablosu

SQL Server'da Sorgu Performansını İyileştirme

WHERE nasıl çalışır

SELECT *
FROM PlayerStats
WHERE Position = 'SG'

Filtrelenmiş PlayerStats Tablosu

SQL Server'da Sorgu Performansını İyileştirme

WHERE işleme sırası

SELECT PlayerName, 
      Team, 
      (DRebound+ORebound) AS TotalRebounds
FROM PlayerStats
WHERE TotalRebounds >= 1000
ORDER BY TotalRebounds DESC;
  • WHERE, SELECT'ten önce işlenir
-- ERROR
Invalid column name 'TotalRebounds'.
SQL Server'da Sorgu Performansını İyileştirme

Alt sorgu kullanma

SELECT PlayerName, 
       Team, 
       TotalRebounds
FROM
     -- tr alt sorgusunun başlangıcı
    (SELECT PlayerName, Team, 
             (DRebound+ORebound) AS TotalRebounds
     FROM PlayerStats) tr
WHERE TotalRebounds >= 1000 -- alt sorguda oluşturuldu
ORDER BY TotalRebounds DESC;
SQL Server'da Sorgu Performansını İyileştirme

Alt sorgu kullanma

SELECT PlayerName, 
       Team, 
       TotalRebounds
FROM
     -- tr alt sorgusunun başlangıcı
    (SELECT PlayerName, Team, 
             (DRebound+ORebound) AS TotalRebounds
     FROM PlayerStats) tr
WHERE TotalRebounds >= 1000 -- alt sorguda oluşturuldu
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'da Sorgu Performansını İyileştirme

Sütunlar üzerinde hesaplamalar

SELECT PlayerName, 
       Team, 
       (DRebound+ORebound) AS TotalRebounds
FROM PlayerStats
WHERE (DRebound+ORebound) >= 1000
ORDER BY TotalRebounds DESC;
  • WHERE koşulunda sütunlar üzerinde yapılan hesaplamalar sorgu süresini artırabilir
PlayerName Team TotalRebounds
Andre Drummond DET 1247
DeAndre Jordan LAC 1171
Karl-Anthony Towns MIN 1012
Dwight Howard CHO 1012
SQL Server'da Sorgu Performansını İyileştirme

Sütunlar üzerinde işlevler

SELECT PlayerName, College, DraftYear 
FROM Players
WHERE UPPER(LEFT(College,7)) = 'GEORGIA'; 
-- filtreleme sütununda gereksiz işlev kullanımı
  • WHERE koşulunda sütunlara işlev uygulamak sorgu süresini artırabilir
PlayerName College DraftYear
Damien Wilkins Georgia
Derrick Favors Georgia Tech 2010
Iman Shumpert Georgia Tech 2011
R.J. Hunter Georgia State 2015
... ... ...
SQL Server'da Sorgu Performansını İyileştirme

WHERE sadeleştirildi

SELECT PlayerName, College, DraftYear 
FROM Players 
        -- Hesaplama veya işlev yok
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'da Sorgu Performansını İyileştirme

Özet

  • WHERE, SELECT'ten önce işlenir
  • WHERE koşulunda sütunlar üzerinde hesaplamalar sorgu süresini artırabilir
  • WHERE koşulunda sütunlara işlev uygulamak sorgu süresini artırabilir
SQL Server'da Sorgu Performansını İyileştirme

Hadi pratik yapalım!

SQL Server'da Sorgu Performansını İyileştirme

Preparing Video For Download...