Alternatif yöntemler 1

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

Dean Smith

Founder, Atamai Analytics

EXISTS

SELECT CustomerID,
       CompanyName,
       ContactName 
FROM Customers c
WHERE EXISTS
        (SELECT 1 
         FROM Orders o
         WHERE c.CustomerID = o.CustomerID);
CustomerID CompanyName ContactName
ALFKI Alfreds Futterkiste Maria Anders
LAUGB Laughing Bacchus Wine Cellars Yoshi Tannamuri
QUICK QUICK-Stop Horst Kloss
... ... ...
SQL Server'da Sorgu Performansını İyileştirme

IN

SELECT CustomerID,
       CompanyName,
       ContactName 
FROM Customers
WHERE CustomerID IN
        (SELECT CustomerID 
         FROM Orders);
CustomerID CompanyName ContactName
ALFKI Alfreds Futterkiste Maria Anders
LAUGB Laughing Bacchus Wine Cellars Yoshi Tannamuri
QUICK QUICK-Stop Horst Kloss
... ... ...
SQL Server'da Sorgu Performansını İyileştirme

EXISTS ve IN

 

  • EXISTS, koşul TRUE olduğunda alt sorguda aramayı durdurur

 

  • IN, dış sorguya geçmeden önce alt sorgudan tüm sonuçları toplar

 

  • Alt sorgu ile IN yerine EXISTS kullanmayı düşünün
SQL Server'da Sorgu Performansını İyileştirme

NOT EXISTS

SELECT CustomerID,
       CompanyName,
       ContactName 
FROM Customers c
WHERE NOT EXISTS 
        (SELECT 1 
         FROM Orders o
         WHERE c.CustomerID = o.CustomerID);
CustomerID CompanyName ContactName
FISSA FISSA Fabrica Inter. Salchichas S.A. Diego Roel
PARIS Paris spécialités Marie Bertrand
SQL Server'da Sorgu Performansını İyileştirme

NOT IN

SELECT CustomerID,
       CompanyName,
       ContactName 
FROM Customers
WHERE CustomerID NOT IN
        (SELECT CustomerID 
         FROM Orders);
CustomeID CompanyName ContactName
FISSA FISSA Fabrica Inter. Salchichas S.A. Diego Roel
PARIS Paris spécialités Marie Bertrand
SQL Server'da Sorgu Performansını İyileştirme

NOT IN ve NULL'lar

SELECT UNStatisticalRegion AS UN_Region
      ,CountryName
      ,Capital
FROM Nations
WHERE Capital NOT IN 
        (SELECT NearestPop 
         FROM Earthquakes);
UN_Region CountryName Capital
SQL Server'da Sorgu Performansını İyileştirme

NOT IN'de NULL'ları ele alma

SELECT UNStatisticalRegion AS UN_Region
      ,CountryName
      ,Capital
FROM Nations
WHERE Capital NOT IN 
        (SELECT NearestPop 
         FROM Earthquakes
         WHERE NearestPop IS NOT NULL);
UN_Region CountryName Capital
South Asia India New Delhi
East Asia and Pacific Indonesia Jakarta
East Asia and Pacific East Timor Dili
Sahara Africa Comoros Moroni
... ... ...
SQL Server'da Sorgu Performansını İyileştirme

EXISTS, NOT EXISTS, IN ve NOT IN

Avantajlar

  • Sonuçlar dış sorgudan herhangi bir sütunu, istenen sırayla içerebilir

Dezavantajlar

  • Alt sorgudaki NULL değerlerini NOT IN'in ele alış biçimi
SQL Server'da Sorgu Performansını İyileştirme

Hadi pratik yapalım!

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

Preparing Video For Download...