SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

Kemungkinan langkah untuk meningkatkan kinerja kueri SQL Server

Run pertama query dari Sql Server Management Studio dan lihat rencana kueri untuk melihat di mana letak leher botolnya. Setiap tempat Anda melihat "pemindaian tabel" atau "pemindaian indeks" itu harus melalui semua data untuk menemukan apa yang dicari. Jika Anda membuat indeks yang sesuai yang dapat digunakan untuk operasi ini, itu akan meningkatkan kinerja.

Tercantum di bawah ini adalah beberapa tip untuk meningkatkan kinerja kueri sql..

Hindari Beberapa Gabung dalam Satu Kueri

Cobalah untuk menghindari penulisan kueri SQL menggunakan beberapa gabungan yang mencakup gabungan luar, penerapan silang, penerapan luar, dan sub kueri kompleks lainnya. Ini mengurangi pilihan Pengoptimal untuk memutuskan urutan bergabung dan jenis bergabung. Terkadang, Pengoptimal dipaksa untuk menggunakan gabungan loop bersarang, terlepas dari konsekuensi kinerja untuk kueri dengan penerapan silang atau subkueri yang terlalu rumit.

Hilangkan Kursor dari Kueri Coba hapus kursor dari kueri dan gunakan kueri berbasis set; kueri berbasis set lebih efisien daripada berbasis kursor. Jika ada kebutuhan untuk menggunakan kursor daripada menghindari kursor dinamis karena cenderung membatasi pilihan paket yang tersedia untuk pengoptimal kueri. Misalnya, kursor dinamis membatasi pengoptimal untuk menggunakan gabungan loop bersarang.

Hindari Penggunaan Sub Kueri Skalar yang Tidak Berkorelasi Anda dapat menulis ulang kueri Anda untuk menghapus subkueri skalar yang tidak berkorelasi sebagai kueri terpisah alih-alih bagian dari kueri utama dan menyimpan output dalam sebuah variabel, yang dapat dirujuk dalam kueri utama atau bagian selanjutnya dari kumpulan. Ini akan memberikan opsi yang lebih baik kepada Pengoptimal, yang dapat membantu mengembalikan perkiraan kardinalitas yang akurat bersama dengan rencana yang lebih baik.

Hindari Fungsi Bernilai Tabel Multi-pernyataan (TVF) TVF multi-pernyataan lebih mahal daripada TFV inline. SQL Server memperluas TFV sebaris ke dalam kueri utama seperti memperluas tampilan tetapi mengevaluasi TVF multi-pernyataan dalam konteks terpisah dari kueri utama dan mewujudkan hasil multi-pernyataan ke dalam tabel kerja sementara. Konteks dan tabel kerja yang terpisah membuat TVF multi-pernyataan menjadi mahal.

Buat Indeks yang Sangat Selektif Selektivitas menentukan persentase baris yang memenuhi syarat dalam tabel (jumlah baris yang memenuhi syarat/jumlah total baris). Jika rasio jumlah baris yang memenuhi syarat dengan jumlah total baris rendah, indeks sangat selektif dan paling berguna. Indeks non-cluster paling berguna jika rasionya sekitar 5% atau kurang, yang berarti jika indeks dapat menghilangkan 95% baris dari pertimbangan. Jika indeks mengembalikan lebih dari 5% dari baris dalam tabel, itu mungkin tidak akan digunakan; baik indeks yang berbeda akan dipilih atau dibuat atau tabel akan dipindai.

Memposisikan Kolom dalam Indeks Urutan atau posisi kolom dalam indeks juga memainkan peran penting untuk meningkatkan kinerja kueri SQL. Indeks dapat membantu meningkatkan kinerja kueri SQL jika kriteria kueri cocok dengan kolom yang paling banyak tersisa di kunci indeks. Sebagai praktik terbaik, kolom paling selektif harus ditempatkan paling kiri di kunci indeks non-cluster.

Jatuhkan Indeks yang Tidak Digunakan Menghapus indeks yang tidak digunakan dapat membantu mempercepat modifikasi data tanpa mempengaruhi pengambilan data. Selain itu, Anda perlu menentukan strategi untuk proses batch yang jarang berjalan dan menggunakan indeks tertentu. Dalam kasus seperti itu, membuat indeks sebelum proses batch dan kemudian menghapusnya saat proses batch selesai membantu mengurangi overhead pada database.

Pembuatan dan Pembaruan Statistik Anda perlu mengurus pembuatan statistik dan pembaruan rutin untuk kolom yang dihitung dan multi-kolom yang dirujuk dalam kueri; pengoptimal kueri menggunakan informasi tentang distribusi nilai dalam satu atau beberapa kolom statistik tabel untuk memperkirakan kardinalitas, atau jumlah baris, dalam hasil kueri. Perkiraan kardinalitas ini memungkinkan pengoptimal kueri untuk membuat rencana kueri berkualitas tinggi.

Kunjungi Kembali Definisi Skema Anda Last but not least, kunjungi kembali definisi skema Anda; perhatikan bahwa batasan FORIGEN KEY, NOT NULL dan CEHCK yang sesuai ada atau tidak. Ketersediaan batasan yang tepat di tempat yang tepat selalu membantu meningkatkan kinerja kueri, seperti batasan FORIGEN KEY membantu menyederhanakan gabungan dengan mengonversi beberapa gabungan luar atau semi menjadi gabungan dalam dan kendala CHECK juga membantu sedikit dengan menghapus predikat yang tidak perlu atau berlebihan.

Referensi




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Temukan prosedur tersimpan berdasarkan nama

  2. Bagaimana cara melihat paket SSIS di SQL Server Management Studio?

  3. ALTER DATABASE gagal karena kunci tidak dapat ditempatkan pada database

  4. Bagaimana cara menghapus entri server di Layar Terhubung ke Server SQL Server Management Studio?

  5. SQL Server:Bagaimana cara melampirkan / memperbaiki database yang terlepas / rusak?