Mengelola duplikasi

Meningkatkan Kinerja Kueri di SQL Server

Dean Smith

Founder, Atamai Analytics

Kueri mengembalikan duplikasi

SELECT PlayerName,
       Team
FROM PlayerStats; 
PlayerName Team
... ...
Emmanuel Mudiay DEN
Emmanuel Mudiay NYK
Enes Kanter NYK
Eric Bledsoe PHO
Eric Bledsoe MIL
... ...
Meningkatkan Kinerja Kueri di SQL Server

Menghapus duplikasi dengan DISTINCT()

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
PlayerName
...
Emmanuel Mudiay
Enes Kanter
Eric Bledsoe
Eric Gordon
Eric Moreland
...
Meningkatkan Kinerja Kueri di SQL Server

GROUP BY alih-alih DISTINCT()

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
SELECT PlayerName
FROM PlayerStats 
GROUP BY PlayerName;
Meningkatkan Kinerja Kueri di SQL Server

GROUP BY alih-alih DISTINCT()

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
... ...
Meningkatkan Kinerja Kueri di SQL Server

Ada cara lain?

SELECT PlayerName
FROM Players;
PlayerName
...
Emmanuel Mudiay
Enes Kanter
Eric Bledsoe
Eric Gordon
Eric Moreland
...
Meningkatkan Kinerja Kueri di SQL Server

Tabel Fruits

Fruits1

FruitName FruitType
Grapefruit Citrus
Orange Citrus
Peach Stone
Strawberry Berry

Fruits2

FruitName FruitType
Marionberry Berry
Orange Citrus
Plum Stone
Strawberry Berry
Meningkatkan Kinerja Kueri di SQL Server

Buah duplikat

 

 

 

  • Orange dan Strawberry terduplikasi

Fruits1 ditambahkan ke Fruits2

FruitName FruitType
... ...
Orange Citrus
Orange Citrus
Plum Stone
Strawberry Berry
Strawberry Berry
Meningkatkan Kinerja Kueri di SQL Server

Hapus duplikasi dengan UNION

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
Meningkatkan Kinerja Kueri di SQL Server

Bagaimana dengan UNION ALL?

 

  • UNION ALL
    • menambahkan baris dari satu atau lebih tabel dan tidak menghapus baris duplikat

 

  • UNION
    • menambahkan baris dari satu atau lebih tabel dan menghapus baris duplikat
Meningkatkan Kinerja Kueri di SQL Server

DISTINCT() dan UNION

  • Gunakan dengan hati-hati
  • Mungkin memakai pengurutan internal untuk memeriksa duplikasi
  • Berpotensi menambah waktu eksekusi kueri
Meningkatkan Kinerja Kueri di SQL Server

Menggunakan DISTINCT()

Sebelum memakai DISTINCT(), tanyakan:

  • Adakah metode lain?
    • gunakan tabel dengan kunci unik
  • Apakah kueri memakai fungsi agregat?
    • kelompokkan dengan GROUP BY
Meningkatkan Kinerja Kueri di SQL Server

Menggunakan UNION

Sebelum memakai UNION, tanyakan:

  • Apakah baris duplikat boleh?
  • Apakah penggabungan kueri akan membuat duplikasi?
  • Pertimbangkan UNION ALL jika duplikasi boleh atau tidak akan terjadi
Meningkatkan Kinerja Kueri di SQL Server

Ayo berlatih!

Meningkatkan Kinerja Kueri di SQL Server

Preparing Video For Download...