Yinelemeleri yönetme

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

Dean Smith

Founder, Atamai Analytics

Yineleme döndüren sorgu

SELECT PlayerName,
       Team
FROM PlayerStats; 
PlayerName Team
... ...
Emmanuel Mudiay DEN
Emmanuel Mudiay NYK
Enes Kanter NYK
Eric Bledsoe PHO
Eric Bledsoe MIL
... ...
SQL Server'da Sorgu Performansını İyileştirme

DISTINCT() ile yinelenenleri kaldırma

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
PlayerName
...
Emmanuel Mudiay
Enes Kanter
Eric Bledsoe
Eric Gordon
Eric Moreland
...
SQL Server'da Sorgu Performansını İyileştirme

DISTINCT() yerine GROUP BY

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
SELECT PlayerName
FROM PlayerStats 
GROUP BY PlayerName;
SQL Server'da Sorgu Performansını İyileştirme

DISTINCT() yerine GROUP BY

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
SELECT PlayerName
FROM PlayerStats 
GROUP BY PlayerName;
SELECT PlayerName,
    COUNT(Team) AS TeamsPlayedFor
FROM PlayerStats 
GROUP BY PlayerName;
PlayerName TeamsPlayedFor
... ...
Emmanuel Mudiay 2
Enes Kanter 1
Eric Bledsoe 2
Eric Gordon 1
Eric Moreland 1
... ...
SQL Server'da Sorgu Performansını İyileştirme

Başka bir yol var mı?

SELECT PlayerName
FROM Players;
PlayerName
...
Emmanuel Mudiay
Enes Kanter
Eric Bledsoe
Eric Gordon
Eric Moreland
...
SQL Server'da Sorgu Performansını İyileştirme

Meyve tabloları

Fruits1

FruitName FruitType
Grapefruit Citrus
Orange Citrus
Peach Stone
Strawberry Berry

Fruits2

FruitName FruitType
Marionberry Berry
Orange Citrus
Plum Stone
Strawberry Berry
SQL Server'da Sorgu Performansını İyileştirme

Yinelenen meyveler

 

 

 

  • Orange ve Strawberry yineleniyor

Fruits1, Fruits2'ye eklendi

FruitName FruitType
... ...
Orange Citrus
Orange Citrus
Plum Stone
Strawberry Berry
Strawberry Berry
SQL Server'da Sorgu Performansını İyileştirme

UNION ile yinelenenleri kaldırma

SELECT FruitName, FruitType
FROM Fruits1

UNION

SELECT FruitName, FruitType
FROM Fruits2
FruitName FruitType
Grapefruit Citrus
Orange Citrus
Peach Stone
Strawberry Berry
Marionberry Berry
Plum Stone
SQL Server'da Sorgu Performansını İyileştirme

Peki UNION ALL?

 

  • UNION ALL
    • bir veya daha çok tablodan satırları ekler ve yinelenenleri kaldırmaz

 

  • UNION
    • bir veya daha çok tablodan satırları ekler ve yinelenenleri kaldırır
SQL Server'da Sorgu Performansını İyileştirme

DISTINCT() ve UNION

  • Dikkatle kullanın
  • Sıralayıp yinelenenleri kontrol etmek için dahili sıralama kullanabilir
  • Sorgu süresini artırabilir
SQL Server'da Sorgu Performansını İyileştirme

DISTINCT() kullanımı

DISTINCT() kullanmadan önce şunları soralım:

  • Alternatif bir yöntem var mı?
    • bunun yerine benzersiz anahtarlı bir tablo kullanma
  • Sorgu bir toplu (aggregate) fonksiyon kullanıyor mu?
    • GROUP BY ile gruplayın
SQL Server'da Sorgu Performansını İyileştirme

UNION kullanımı

UNION kullanmadan önce şunları soralım:

  • Yinelenen satırlar kabul edilebilir mi?
  • Birleştirilen sorgular yinelenen üretecek mi?
  • Yinelenenler uygunsa ya da oluşmayacaksa UNION ALL düşünün
SQL Server'da Sorgu Performansını İyileştirme

Haydi pratik yapalım!

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

Preparing Video For Download...