Telah disarankan kepada saya bahwa penggunaan pernyataan IF dalam t-SQL batch merusak kinerja. Saya mencoba mencari konfirmasi atau memvalidasi pernyataan ini. Saya menggunakan SQL Server 2005 dan 2008.
Penegasannya adalah bahwa dengan kumpulan berikut: -
IF @parameter = 0
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
SQL Server tidak dapat menggunakan kembali rencana eksekusi yang dihasilkan karena eksekusi berikutnya mungkin memerlukan cabang yang berbeda. Ini menyiratkan bahwa SQL Server akan menghilangkan satu cabang sepenuhnya dari rencana eksekusi atas dasar bahwa untuk pelaksanaan saat ini sudah dapat menentukan cabang mana yang diperlukan. Apakah ini benar?
Selain itu apa yang terjadi dalam kasus ini: -
IF EXISTS (SELECT ....)
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
di mana tidak mungkin untuk menentukan terlebih dahulu cabang mana yang akan dieksekusi?