Pengantar

Meningkatkan Kinerja Kueri di SQL Server

Dean Smith

Founder, Atamai Analytics

Basis data Gempa Bumi

Basis Data Gempa Bumi

Meningkatkan Kinerja Kueri di SQL Server

Basis data NBA Musim 2017-2018

Basis Data NBA Musim 2017-2018

Meningkatkan Kinerja Kueri di SQL Server

Basis data Pesanan Pelanggan

Basis Data Pesanan Pelanggan

Meningkatkan Kinerja Kueri di SQL Server

Mudah dibaca?

Select ps.Team, count(p.PlayerName) 
As NonNthAmerPlayers from 
 PlayerStats ps inner 
join (select PlayerName FROM Players 
    WHERE Country <> 'USA' Or Country 
 <> 'Canada' ) 
 p on p.PlayerName = ps.PlayerName 
 group BY ps.Team
having Count(p.PlayerName) 
>=24 Order by NonNthAmerPlayers desc
Tim NonNthAmerPlayers
HOU 24
LAL 24
MEM 24
MIL 24
Meningkatkan Kinerja Kueri di SQL Server

Saran

  • Konsisten
  • Gunakan HURUF BESAR untuk semua sintaks SQL
  • Buat baris baru untuk setiap sintaks utama: SELECT, FROM, WHERE, dll.
  • Indentasikan kode:
    • Subkueri
    • Pernyataan ON
    • Kondisi AND/OR
    • Untuk menghindari baris kode yang terlalu panjang, mis. banyak nama kolom
  • Akhiri kueri dengan titik koma (;)
  • Gunakan alias jika perlu dengan AS
Meningkatkan Kinerja Kueri di SQL Server

Jauh lebih baik...

Dari

Select ps.Team, count(p.PlayerName) 
As NonNthAmerPlayers from 
 PlayerStats ps inner 
join (select PlayerName FROM Players 
    WHERE Country <> 'USA' Or Country 
 <> 'Canada' ) 
 p on p.PlayerName = ps.PlayerName 
 group BY ps.Team
having Count(p.PlayerName) 
>=24 Order by NonNthAmerPlayers desc

Menjadi

SELECT ps.Team, 
    COUNT(p.PlayerName) NonNthAmerPlayers
FROM PlayerStats ps
INNER JOIN
        (SELECT PlayerName 
         FROM Players 
         WHERE Country <> 'USA'
                OR Country <> 'Canada' ) p
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24
ORDER BY NonNthAmerPlayers DESC;
Meningkatkan Kinerja Kueri di SQL Server

Komentar blok

/* 
Menghasilkan daftar tim NBA dengan 24 atau lebih pemain 
bukan Amerika Utara dalam skuad.
*/

SELECT ps.Team, COUNT(p.PlayerName) NonNthAmerPlayers FROM PlayerStats ps INNER JOIN (SELECT PlayerName FROM Players WHERE Country <> 'USA' OR Country <> 'Canada' ) p ON p.PlayerName = ps.PlayerName GROUP BY ps.Team HAVING COUNT(p.PlayerName) >=24 ORDER BY NonNthAmerPlayers DESC;

Gunakan /* dan */ untuk memberi komentar pada blok kode atau teks

Meningkatkan Kinerja Kueri di SQL Server

Komentar blok

/* 
Menghasilkan daftar tim NBA dengan 24 atau lebih pemain 
bukan Amerika Utara dalam skuad.
*/

SELECT ps.Team, COUNT(p.PlayerName) NonNthAmerPlayers FROM PlayerStats ps INNER JOIN (SELECT PlayerName FROM Players WHERE Country <> 'USA' OR Country <> 'Canada' ) p ON p.PlayerName = ps.PlayerName GROUP BY ps.Team HAVING COUNT(p.PlayerName) >=24 ORDER BY NonNthAmerPlayers DESC;

Gunakan /* dan */ untuk memberi komentar pada blok kode atau teks

Team NonNthAmerPlayers
HOU 24
LAL 24
MEM 24
MIL 24
Meningkatkan Kinerja Kueri di SQL Server

Komentar baris

Gunakan -- untuk memberi komentar pada satu baris kode atau teks

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers
FROM PlayerStats ps

INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24

ORDER BY NonNthAmerPlayers DESC;
Meningkatkan Kinerja Kueri di SQL Server

Komentar baris

Gunakan -- untuk memberi komentar pada satu baris kode atau teks

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- Jumlah pemain
FROM PlayerStats ps

INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- Subkueri diindentasi
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24

ORDER BY NonNthAmerPlayers DESC;

 

  • Komentar bahwa kolom baru adalah jumlah pemain

 

  • Komentar bahwa subkueri diberi indentasi
Meningkatkan Kinerja Kueri di SQL Server

Komentar baris

Gunakan -- untuk memberi komentar pada satu baris kode atau teks

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- Jumlah pemain
FROM PlayerStats ps
-- Inner join dimulai di sini
INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- Subkueri diindentasi
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24
-- Hapus ORDER BY, tidak wajib
ORDER BY NonNthAmerPlayers DESC;

 

 

  • Komentar penanda jeda sebelum INNER JOIN

 

 

  • Komentar tentang kewajiban ORDER BY
Meningkatkan Kinerja Kueri di SQL Server

Komentar baris

Gunakan -- untuk memberi komentar pada satu baris kode atau teks

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- Jumlah pemain
FROM PlayerStats ps
-- Inner join dimulai di sini
INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- Subkueri diindentasi
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24;
-- Hapus ORDER BY, tidak wajib
-- ORDER BY NonNthAmerPlayers DESC

 

 

 

 

 

 

  • Pernyataan ORDER BY dikomentari
Meningkatkan Kinerja Kueri di SQL Server

Ayo berlatih!

Meningkatkan Kinerja Kueri di SQL Server

Preparing Video For Download...