Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Akankah TSQL mengembalikan hasil yang lebih cepat daripada prosedur tersimpan di SQL Server?

Dalam kueri Anda, tambahkan OPTION(OPTIMIZE FOR UNKNOWN) (sebagai klausa terakhir) untuk mencegah sniffing parameter. Untuk sintaks dan penjelasan, lihat dokumentasi di Petunjuk Kueri .

Apa yang dilakukan SQL Server saat pertama kali menjalankan Prosedur Tersimpan adalah mengoptimalkan rencana eksekusi untuk parameter yang diteruskan ke sana. Ini dilakukan dalam proses yang disebut Parameter Sniffing .

Secara umum, rencana eksekusi di-cache oleh SQL Server sehingga SQL Server tidak perlu mengkompilasi ulang setiap kali untuk kueri yang sama. Lain kali prosedur dijalankan, SQL Server akan menggunakan kembali rencana eksekusi untuk kueri di dalamnya... Namun, rencana eksekusi mungkin sama sekali tidak efisien jika Anda menyebutnya (mereka) dengan parameter yang berbeda .

Opsi yang saya berikan kepada Anda akan memberi tahu kompiler SQL bahwa rencana eksekusi tidak boleh dioptimalkan untuk spesifik parameter, melainkan untuk apa saja parameter yang diteruskan ke Stored Procedure.

Mengutip dokumentasi:

Dalam beberapa kasus, Prosedur Tersimpan bisa mendapatkan keuntungan dari Parameter Sniffing, dalam beberapa kasus tidak. Untuk Prosedur Tersimpan yang tidak memanfaatkan Paramater Sniffing, Anda dapat menambahkan opsi ke setiap kueri yang menggunakan salah satu parameter Prosedur Tersimpan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengonversi DateTime ke TimeSpan dalam kueri Entity Framework

  2. Kelola File MDF di SQL Server 2019

  3. Daftar string di SqlCommand melalui Parameter di C#

  4. Bagaimana cara melihat koneksi SQL Server yang aktif?

  5. Inilah Tiga Alasan Mengapa Anda Mungkin Melihat Aktivitas Puncak di Instance SQL Anda