Jika Anda membaca artikel ini, kemungkinan besar Anda sudah familiar dengan SQL. Anda tahu cara menulis kueri SQL dasar. Ada banyak cara untuk mengeksekusi query SQL untuk mendapatkan hasil yang diinginkan pada database Anda.
Namun, tidak semua kueri SQL dibuat sama. Sebagian besar dapat dioptimalkan untuk mengikuti praktik terbaik kueri SQL. Artikel ini berfokus pada 9 kiat pengoptimalan kueri SQL. Setelah membaca, Anda akan mengetahui semua hal yang harus dan tidak boleh dilakukan dalam menulis kueri SQL.
1. Hindari Penggunaan SELECT Asterisk (SELECT *)
Ini adalah salah satu praktik terbaik SQL yang paling penting. Kueri SELECT * mengembalikan catatan dari semua kolom tabel. Meskipun membantu dalam beberapa kasus, kueri ini sering menghasilkan banyak komplikasi:
- Anda mungkin tidak perlu mengambil semua kolom. Namun, SELECT * mengembalikan semuanya, menghabiskan bandwidth yang berlebihan untuk mengeksekusi kueri melalui jaringan.
- Nama kolom dalam tabel dapat diubah atau dihapus, dan kolom baru dapat ditambahkan. Dengan demikian, Anda mungkin menerima hasil yang tidak diharapkan untuk kueri SELECT *. Menentukan nama kolom adalah ide yang lebih baik.
- SELECT * lebih lambat dari SELECT Column Names karena yang terakhir dapat menggunakan indeks kolom untuk mengembalikan data.
- Urutan kolom yang dikembalikan oleh SELECT * tidak dalam kendali Anda. Namun, Anda menentukan urutan yang diinginkan saat Anda menentukan nama kolom.
2. Gunakan WHERE dan HAVING Clause dengan Akurat
Klausa WHERE dan HAVING dalam SQL memiliki fungsi yang berbeda. Oleh karena itu, kita harus menggunakannya secara berbeda. Tiga kasus penggunaan utama WHERE dan HAVING di bawah ini:
- WHERE dapat digunakan dengan kueri CRUD yaitu, SELECT, INSERT, UPDATE, DELETE. Di sisi lain, Anda dapat menggunakan HAVING dengan pernyataan SELECT saja.
- WHERE memfilter data sebelum operasi agregasi seperti GROUP BY. Kemudian dapat digunakan tanpa fungsi agregasi. HAVING harus digunakan setelah agregasi.
- Kita dapat menggunakan fungsi agregasi, seperti SUM, MIN, MAX COUNT dengan klausa HAVING. Dengan klausa WHERE, kita tidak dapat menggunakan fungsi agregasi, kecuali klausa ini merupakan bagian dari subquery yang dikandung oleh klausa HAVING.
3. Gunakan INNER JOIN Query sebagai ganti Klausa WHERE untuk Menggabungkan Tabel
Query JOIN mungkin adalah salah satu query SQL yang paling berguna. Ini memungkinkan Anda untuk MEMILIH data dari beberapa tabel. Meskipun Anda dapat menggunakan klausa WHERE untuk mendapatkan data gabungan dari dua tabel, klausa WHERE sangat tidak efisien.
Klausa WHERE mengembalikan CROSS JOIN yang merupakan produk cartesian dari catatan di kedua kolom. Misalnya, jika Anda memiliki 1.000 record di tabel A dan jumlah record yang sama di tabel B, klausa WHERE akan membuat CROSS JOIN dengan 1.000 x 1.000 =1.000.000 record.
Jika kolom tabel A dan B yang terlibat dalam klausa WHERE hanya memiliki 1.000 nilai umum, klausa WHERE akan mengembalikan 1.000 record dari 1.000.000 record awal yang dibuat oleh produk kartesius.
Klausa INNER JOIN hanya mengembalikan 1.000 catatan di mana kedua tabel A dan B memiliki nilai yang sama dalam kolom. Dalam hal ini, INNER JOIN memiliki pekerjaan 1.000x lebih sedikit daripada klausa WHERE.
Beberapa database mengonversi klausa WHERE dalam kueri JOIN menjadi klausa INNER JOIN di belakang layar. Namun, selalu disarankan agar Anda menggunakan INNER JOIN secara eksplisit alih-alih klausa WHERE untuk mengikuti praktik terbaik pengkodean SQL.
4. Gunakan EXISTS, NOT EXISTS alih-alih IN dan NOT IN dalam SQL
Selalu gunakan EXIST di atas klausa IN jika Anda ingin mengonfirmasi keberadaan nilai dalam tabel tertentu.
Proses yang mengeksekusi klausa EXISTS berhenti segera setelah menemukan nilai yang diperlukan dalam tabel. Di sisi lain, kueri IN memindai semua bahkan setelah menemukan nilai yang diperlukan.
Dengan cara yang sama, Anda harus selalu menggunakan NOT EXISTS alih-alih NOT IN saat Anda mencari nilai yang tidak ada dalam tabel.
5. Gunakan Operator Setara (=) alih-alih LIKE Operator dalam SQL
Anda dapat menggunakan operator =dan LIKE untuk mencocokkan string. Perbedaan utama antara keduanya adalah bahwa operator LIKE digunakan untuk mencocokkan karakter pengganti seperti % untuk mencari string parsial, sedangkan operator equals “=” mencari kecocokan persis.
Jika Anda harus memilih di antara keduanya, selalu pilih operator yang sama (“=”), karena menggunakan kolom yang diindeks. Oleh karena itu, ini lebih cepat daripada klausa LIKE.
6. Gunakan klausa LIMIT untuk Mengurangi Hasil Penelusuran
Jika Anda harus mengembalikan data dari beberapa tabel atau kolom, gunakan klausa LIMIT (juga dikenal sebagai klausa TOP) untuk mengurangi hasil kueri. Jika ada ribuan kolom, atau Anda ingin melihat seperti apa tampilan data di tabel saja, tidak perlu mengembalikan semua baris. Sebagai gantinya, batasi jumlah baris yang dikembalikan oleh kueri SELECT dengan bantuan klausa LIMIT yang terkait dengannya.
7. Gunakan Alias Tabel saat Membuat Kueri Beberapa Tabel
Untuk menghindari kebingungan dan mencegah database mengurai nama kolom saat mencari tabel miliknya, selalu gunakan alias tabel.
Anda sudah harus menggunakan nama tabel/alias jika Anda memiliki nama kolom yang sama di beberapa tabel, jadi ini tidak akan menambah beban kerja Anda.
8. Hindari Awalan Prosedur Tersimpan dengan “sp_”
Jika Anda bekerja dengan prosedur tersimpan, maka, kemungkinan besar, Anda mengawali nama prosedur tersimpan dengan "sp_". Ini bukan yang terbaik.
SQL Server dimulai dengan mencari prosedur tersimpan dengan "sp_" di awal namanya di database master sebelum melanjutkan ke pencarian di tempat lain.
Oleh karena itu, Anda dapat menghemat banyak waktu dengan tidak mengawali prosedur tersimpan dengan “sp_” Kemudian, alih-alih mencoba menemukan prosedur tersimpan di database master, server SQL akan langsung memeriksa dbo sebagai pemilik prosedur tersimpan.
9. Terapkan Gaya Penulisan Kueri yang Baik
Sangat penting untuk mengikuti praktik terbaik untuk kueri SQL seperti praktik penataan gaya yang baik saat menulis kueri SQL. Perhatikan rekomendasi di bawah ini untuk meningkatkan gaya penulisan kueri Anda:
- Selalu tambahkan komentar ke kueri SQL. Komentar tidak hanya akan membantu anggota tim lain untuk memahami pertanyaan Anda dengan lebih baik, tetapi juga mengingatkan Anda apa yang Anda lakukan sendiri di masa lalu.
- Gunakan konvensi penamaan yang jelas. Basis data, tabel, nama kolom, tabel sementara, dan nama variabel lainnya harus 100% dapat dibaca dan jelas.
- Indentasi kueri Anda bila memungkinkan. Kueri dalam harus diindentasi satu tab dari kiri. Nama dan tipe kolom di dalam tabel juga harus menjorok. Indentasi memastikan tampilan yang lebih bersih dan meningkatkan keterbacaan kueri yang tercermin dalam praktik terbaik SQL Server untuk kueri.
Kesimpulan
SQL adalah bahasa yang sangat fleksibel yang menyediakan banyak cara untuk melakukan tugas yang diinginkan pada database. Untuk membuat aplikasi Anda lebih efisien dan produktif, dan menghindari masalah database jangka panjang, terapkan praktik terbaik pengoptimalan kueri SQL modern untuk menulis kueri Anda. Metode ini membantu Anda mempercepat penyetelan kinerja dalam SQL, menghilangkan rutinitas yang tidak perlu, dan membuat semua pekerjaan Anda lebih ringkas dan transparan.
Baca juga
22 Contoh Indeks SQL yang Bagus untuk Mempercepat Kueri Anda