sumber terbaik untuk kondisi pencarian dinamis:
Kondisi Penelusuran Dinamis di T-SQL oleh Erland Sommarskog
ada banyak implikasi halus tentang bagaimana Anda melakukan ini, apakah indeks dapat digunakan atau tidak. Jika Anda menggunakan rilis SQL Server 2008 yang tepat, Anda cukup menambahkan OPTION (RECOMPILE)
ke kueri dan nilai variabel lokal pada waktu proses digunakan untuk pengoptimalan.
Pertimbangkan ini, OPTION (RECOMPILE)
akan mengambil kode ini (di mana tidak ada indeks yang dapat digunakan dengan kekacauan OR
. ini s):
WHERE
(@search1 IS NULL or [email protected])
AND (@search2 IS NULL or [email protected])
AND (@search3 IS NULL or [email protected])
dan optimalkan saat dijalankan (asalkan hanya @Search2 yang diteruskan dengan nilai):
WHERE
[email protected]
dan indeks dapat digunakan (jika Anda memilikinya di Kolom2)