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

Menggunakan variabel dalam kueri menghasilkan rencana kueri yang berbeda

Karena saat Anda menggunakan nilai FIXED dengan AUTO-PARAMETERIZATION nonaktif, maka paket kueri mengetahui dengan PERSIS nilai apa yang diperlukan untuk menjalankan kueri. Jadi, rencana tersebut secara KHUSUS disesuaikan dengan nilai-nilai tersebut.

Namun ketika Anda menggunakan variabel, paket yang akan dimasukkan ke dalam Cache Kueri adalah paket yang berisi variabel berparameter - yang dapat diganti dengan variabel apa pun dan akan menggunakan kembali paket yang sama. Oleh karena itu, rencana ini harus lebih kuat dan umum untuk menangani "kasus rata-rata terbaik".

Di SQL Server 2008, Anda dapat mengatur apakah parameter sederhana diparameterisasikan secara otomatis atau tidak sehingga Anda mendapatkan paket "kasus rata-rata terbaik" secara konsisten - dengan segala kebaikan dan keburukannya.

Referensi:

EDIT - pada kinerja

Adapun kinerja, pengoptimal bisa salah - dalam hal ini melihat statistik for the exact values dan merasa bahwa indeks tidak membantu (mungkin menjadi masalah titik kritis) jadi rencananya adalah untuk pemindaian berkerumun. Ini adalah seni yang bagus untuk memaksakan rencana kueri - tetapi jelas menggunakan indeks 50% lebih cepat untuk

  1. perangkat keras tertentu
  2. titik tertentu dalam distribusi data waktu
  3. nilai spesifik yang diberikan

Kecuali saya memiliki alasan yang sangat sangat bagus, saya tidak akan memainkan Pengoptimal Kueri (misalnya menggunakan petunjuk indeks) kecuali saya memiliki banyak data untuk membuktikannya akan selalu membuatnya lebih cepat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ekspresi Reguler MSSQL

  2. Cara Mengubah Kolom atau Menghasilkan Alter Script dengan menggunakan GUI di SQL Server - Tutorial SQL Server / T-SQL Bagian 38

  3. replikasi antara dua tabel dengan nama yang berbeda dan yang memiliki nama kolom yang berbeda. Apakah mungkin untuk membuat replikasi seperti itu?

  4. Cara Terbaik untuk Menyimpan Font di database SQL Server

  5. VALUES Clause di SQL Server