Saya memiliki kueri di tabel besar yang terlihat seperti ini:
declare @myIdParam int = 1
select *
from myTable
where (@myIdParam is null or myTable.Id = @myIdParam)
Ada beberapa persyaratan serupa seperti ini di mana klausa, dan ada juga banyak bergabung, tetapi ini adalah ringkasan.
Secara efektif, jika @myIdParam adalah nol, kami tidak ingin membatasi hasil menggunakan parameter ini.
Saya bukan pro DB, tetapi dari tes saya sepertinya pemeriksaan NULL ini dilakukan untuk setiap catatan dan tidak dioptimalkan dengan cara apa pun.
Jika saya menghapus centang nol dan menganggap parameternya bukan nol, kueri kembali seketika. Kalau tidak, dibutuhkan hingga sepuluh detik.
Apakah ada cara untuk mengoptimalkan ini sehingga pemeriksaan dilakukan hanya sekali saat runtime?
OPTION(RECOMPILE)