Tingkatkan kinerja kueri SQL dengan MSSQL. Pelajari cara mengoptimalkan kueri Anda untuk efisiensi dan kecepatan dalam panduan informatif ini.
Kueri SQL Microsoft SQL Server (MSSQL) yang tidak dioptimalkan dapat menghasilkan kinerja di bawah standar, penggunaan sumber daya yang berlebihan, data yang tidak konsisten, kelemahan keamanan, dan kesulitan pemeliharaan. Masalah ini dapat memengaruhi fungsionalitas, ketergantungan, dan keamanan program Anda, yang dapat membuat pengguna frustrasi dan menghabiskan lebih banyak uang.
Mengoptimalkan kueri SQL di MSSQL sangat penting untuk mencapai kinerja yang efisien dan cepat. Dengan menerapkan teknik seperti pengindeksan, penyederhanaan kueri, dan prosedur penyimpanan, pengguna dapat melakukannya menyeimbangkan kinerja kueri dan kinerja modifikasi data, yang pada akhirnya meningkatkan basis data secara keseluruhan pertunjukan.
Optimasi Kueri Melalui Pengindeksan
Pengindeksan basis data mengatur dan mengurutkan data dalam tabel database untuk membuat pencarian lebih cepat dan lebih efisien. Pengindeksan membuat salinan data dalam tabel dan mengurutkannya
mesin basis data dapat menavigasi mereka dengan mudah.Pada eksekusi kueri, mesin basis data menggunakan indeks untuk menemukan data yang diperlukan dan mengembalikan hasil dengan cepat, sehingga mempercepat waktu eksekusi kueri. Tanpa pengindeksan, mesin basis data harus memindai semua baris dalam tabel untuk menemukan data yang diperlukan, dan ini bisa memakan banyak waktu dan sumber daya, terutama untuk tabel besar.
Membuat Indeks di MSSQL
Membuat indeks dalam database relasional itu mudah, dan MSSQL tidak diabaikan. Anda dapat menggunakan BUAT INDEKS pernyataan untuk membuat indeks di MSSQL.
MEMBUATINDEKS index_name
ON table_name (kolom1, kolom2, ...);
Pada kode SQL di atas, index_name adalah nama indeks, table_name adalah nama tabel, dan kolom1, kolom2, dan seterusnya adalah nama kolom yang akan diindeks.
Berikut cara membuat indeks non-cluster pada a Pelanggan meja Nama keluarga kolom dengan pernyataan SQL.
MEMBUAT TIDAK TERMASUK INDEKS IX_Pelanggan_NamaBelakang
ON Pelanggan (Nama Belakang);
Pernyataan itu membuat indeks non-cluster yang disebut IX_Pelanggan_NamaBelakang pada Nama keluarga kolom dari Pelanggan meja.
Biaya Pengindeksan
Meskipun pengindeksan dapat meningkatkan kinerja kueri secara signifikan, namun ada biayanya. Pengindeksan memerlukan ruang disk tambahan untuk menyimpan indeks, dan operasi pengindeksan dapat memperlambat operasi modifikasi data seperti menyisipkan, memperbarui, dan menghapus. Anda harus memperbarui indeks pada modifikasi data, dan operasi pembaruan dapat memakan waktu lama untuk tabel besar.
Oleh karena itu, penting untuk menyeimbangkan kinerja kueri dan kinerja modifikasi data. Anda harus membuat indeks hanya pada kolom yang sering Anda cari. Penting juga untuk secara teratur memantau penggunaan sumber daya indeks dan menghapus indeks yang tidak perlu.
Optimasi Query Melalui Penyederhanaan Query
Untuk analisis data, kueri kompleks berguna untuk ekstraksi data. Namun, kueri kompleks berdampak pada kinerja, dan dapat mengakibatkan ekstraksi data yang tidak efisien.
Penyederhanaan kueri melibatkan penguraian kueri kompleks menjadi kueri yang lebih kecil dan sederhana untuk pemrosesan yang lebih cepat dan tidak memakan banyak sumber daya.
Penyederhanaan kueri meningkatkan kinerja dan mempermudah ekstraksi data dengan memecah kueri kompleks menjadi kueri yang lebih sederhana karena kueri kompleks dapat menyebabkan hambatan dalam sistem. Mereka sulit dipahami, mempersulit pengembang dan analis untuk memecahkan masalah atau mengidentifikasi area pengoptimalan.
Berikut adalah contoh kueri kompleks yang berjalan di MSSQL untuk tabel pesanan pelanggan yang tujuannya adalah untuk mengidentifikasi tren dan pola dalam data:
PILIH
Nama Pelanggan,
COUNT(id_pesanan) SEBAGAI total_pesanan,
AVG(jumlah_pesanan) SEBAGAI jumlah_pesanan_rata-rata,
SUM(jumlah_pesanan) AS total_penjualan
DARI
pesanan
DI MANA
order_date ANTARA '01-01-2022' DAN '31-12-2022'
AND order_status = 'selesai'
KELOMPOK OLEH
Nama Pelanggan
MEMILIKI
JUMLAH(nomor_pesanan) > 5
DIPESAN OLEH
DESC total_penjualan;
Kueri mencari nama pelanggan dan informasi penjualan dari pesanan yang diselesaikan pada tahun 2022 sambil memfilter pelanggan dengan kurang dari lima pesanan menurut total penjualan dalam urutan menurun.
Kueri mungkin memberikan wawasan yang berharga, tetapi rumit dan pada akhirnya akan memakan waktu lebih lama untuk diproses, terutama jika pesanan tabel memiliki banyak entri.
Anda dapat menyederhanakan kueri dengan memecah kueri menjadi kueri yang lebih kecil yang dijalankan satu per satu.
-- Dapatkan daftar nama pelanggan dan jumlah total pesanan yang telah mereka lakukan
PILIH
Nama Pelanggan,
COUNT(id_pesanan) SEBAGAI total_pesanan
DARI
pesanan
DI MANA
order_date ANTARA '01-01-2022' DAN '31-12-2022'
AND order_status = 'selesai'
KELOMPOK OLEH
Nama Pelanggan
MEMILIKI
COUNT(nomor_pesanan) > 5;-- Dapatkan jumlah pesanan rata-rata untuk setiap pelanggan
PILIH
Nama Pelanggan,
AVG(jumlah_pesanan) SEBAGAI jumlah_pesanan_rata-rata
DARI
pesanan
DI MANA
order_date ANTARA '01-01-2022' DAN '31-12-2022'
AND order_status = 'selesai'
KELOMPOK OLEH
Nama Pelanggan
MEMILIKI
COUNT(nomor_pesanan) > 5;
-- Dapatkan total penjualan untuk setiap pelanggan
PILIH
Nama Pelanggan,
SUM(jumlah_pesanan) AS total_penjualan
DARI
pesanan
DI MANA
order_date ANTARA '01-01-2022' DAN '31-12-2022'
AND order_status = 'selesai'
KELOMPOK OLEH
Nama Pelanggan
MEMILIKI
JUMLAH(nomor_pesanan) > 5
DIPESAN OLEH
DESC total_penjualan;
Pendekatan yang disederhanakan ini memisahkan tugas untuk mendapatkan nama pelanggan dan pesanan total, jumlah pesanan rata-rata, dan total penjualan untuk setiap pelanggan ke dalam kueri individual. Setiap kueri memiliki tujuan tertentu dan dioptimalkan untuk tugas tertentu, sehingga memudahkan basis data untuk memproses permintaan.
Tips untuk Penyederhanaan Kueri
Saat Anda menyederhanakan kueri, penting untuk fokus pada satu tugas per waktu untuk membuat kueri yang dioptimalkan untuk tugas tertentu. Berfokus pada satu tugas dapat membantu meningkatkan kinerja secara signifikan.
Selain itu, penting untuk menggunakan konvensi penamaan yang baik agar kode lebih mudah dipahami dan dikelola. Anda dapat dengan mudah mengidentifikasi masalah potensial dan area perbaikan dalam sistem.
Optimasi Kueri Melalui Prosedur Tersimpan
Prosedur tersimpan adalah kumpulan pernyataan SQL yang telah ditulis sebelumnya yang disimpan dalam database. Anda dapat menggunakan prosedur tersimpan untuk melakukan berbagai operasi, mulai dari memperbarui hingga memasukkan atau mengambil data dari database. Prosedur tersimpan dapat menerima parameter. Anda dapat memanggil mereka dari berbagai bahasa pemrograman, menjadikannya alat yang ampuh untuk pengembangan aplikasi.
Berikut adalah contoh membuat prosedur tersimpan untuk MSSQL yang mengembalikan gaji rata-rata karyawan di departemen:
MEMBUATPROSEDUR [dbo].[GetAverageSalary]
@NamaDepartemen VARCHAR(50)
SEBAGAI
MULAI
PILIHAVG(Gaji) sebagai Gaji rata-rata
DARI Karyawan
DIMANA Departemen = @DepartmentName
AKHIR
Dalam prosedur tersimpan, Anda menentukan parameter yang disebut @Nama departemen dan menggunakan DI MANA klausul untuk menyaring hasil oleh departemen. Anda juga menggunakan AVG berfungsi untuk menghitung gaji rata-rata karyawan di departemen.
Anda dapat menjalankan prosedur tersimpan di MSSQL dengan EXEC penyataan.
Inilah cara Anda dapat menjalankan prosedur tersimpan di atas:
EXEC [dbo].[GetAverageSalary] @DepartmentName = 'Penjualan'
Dalam pernyataan eksekusi prosedur tersimpan, Anda meneruskan Penjualan nilai sebagai nama departemen. Pernyataan itu akan mengembalikan gaji rata-rata karyawan di departemen penjualan.
Bagaimana Prosedur Tersimpan Meningkatkan Kinerja Kueri?
Prosedur tersimpan dapat meningkatkan kinerja kueri secara signifikan. Pertama, prosedur tersimpan mengurangi lalu lintas jaringan dengan mengeksekusi pernyataan SQL di sisi server daripada mentransfer data bolak-balik antara klien dan server, sehingga mengurangi jumlah data yang dikirim melalui jaringan dan mengurangi respons kueri waktu.
Kedua, Anda dapat mengkompilasi prosedur caching tersimpan, yang berarti menyimpan rencana eksekusi di memori. Saat Anda memanggil prosedur tersimpan, server mengambil rencana eksekusi dari memori daripada mengkompilasi ulang pernyataan SQL, sehingga mengurangi waktu eksekusi untuk stored procedure dan meningkatkan query pertunjukan.
Anda Dapat Mengatur MSSQL di Ubuntu
MSSQL telah membuat langkah signifikan dalam mendukung Ubuntu dan distribusi Linux lainnya. Microsoft menyadari semakin populernya Linux di perusahaan dan memutuskan untuk memperluas ketersediaan server database andalan mereka ke platform Linux.