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

Mengapa mengeksekusi prosedur tersimpan lebih cepat daripada kueri SQL dari skrip?

SQL Server pada dasarnya melalui langkah-langkah ini untuk menjalankan apa saja query (panggilan prosedur tersimpan atau pernyataan SQL ad-hoc):

1) secara sintaksis memeriksa kueri
2) jika tidak apa-apa - ia memeriksa cache rencana untuk melihat apakah sudah memiliki rencana eksekusi untuk kueri itu
3) jika ada rencana eksekusi - rencana itu adalah ( digunakan kembali dan kueri dieksekusi
4) jika belum ada rencana, rencana eksekusi ditentukan
5) rencana tersebut disimpan ke dalam cache rencana untuk digunakan kembali nanti
6) kueri dieksekusi

Intinya adalah:SQL ad-hoc dan prosedur tersimpan diperlakukan tidak berbeda .

Jika kueri SQL ad-hoc menggunakan parameter dengan benar - sebagaimana mestinya, untuk mencegah serangan injeksi SQL - karakteristik kinerjanya tidak berbeda dan yang pasti tidak lebih buruk daripada menjalankan prosedur tersimpan.

Prosedur tersimpan memiliki manfaat lain (misalnya, tidak perlu memberi pengguna akses tabel langsung), tetapi dalam hal kinerja, menggunakan kueri SQL ad-hoc yang diparametrikan dengan benar sama efisiennya seperti menggunakan prosedur tersimpan.

Pembaruan: menggunakan prosedur tersimpan di atas non-parametris kueri lebih baik karena dua alasan utama:

  • karena setiap kueri yang tidak berparameter adalah baru, berbeda query ke SQL Server, itu harus melalui semua langkah untuk menentukan rencana eksekusi, untuk setiap permintaan (sehingga membuang-buang waktu - dan juga membuang-buang ruang cache rencana, karena menyimpan rencana eksekusi ke dalam cache rencana tidak terlalu membantu pada akhirnya , karena kueri tertentu itu mungkin tidak dieksekusi lagi)

  • kueri non-parametri berisiko terkena serangan injeksi SQL dan harus dihindari bagaimanapun caranya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batas memori di SQL Server 2016 SP1

  2. T-SQL Subquery Max (Tanggal) dan Bergabung

  3. Cara Memfilter Objek di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 19

  4. SQL Server 2017:Menyalin Data SQL Server dari Linux ke Windows dengan SSIS

  5. Cadangkan Database di SQL Server 2017