Sto lavorando per ottimizzare alcune stored procedure molto utilizzate e ho attraversato uno scenario che ha sollevato una domanda per la quale non sono riuscito a trovare alcuna risposta: quando si valuta TSQL in una stored procedure, SQL Server esegue il cortocircuito sull'istruzione IF
?Le istruzioni IF di cortocircuito di SQL Server?
Per esempio, assumere una stored procedure ha un codice simile a:
IF @condition1 = 1
OR EXISTS(SELECT 1 FROM table1 WHERE column1 = @value1)
...
In questo scenario fa di SQL Server cortocircuito la valutazione in modo tale che la dichiarazione EXISTS
non viene mai eseguito quando la clausola precedente restituisce true?
Se mai o solo qualche volta lo fa, allora abbiamo qualche riscrittura davanti a noi.
Non garantito. Controlla il piano di esecuzione per vedere se lo fa nel tuo caso. –
Grazie, "non garantito" è quello che stavo cercando. Il problema è che queste stored procedure sono eseguite su centinaia di DB cliente, quindi se il piano di esecuzione lo determina, non possiamo presumere che verrà valutato lo stesso sul sistema di ogni cliente e che è necessario riscrivere. –
Se si desidera una garanzia di ghisa, la separazione in più istruzioni 'if' lo farà. Quando [ho visto questo prima] (http://stackoverflow.com/a/5543985/73226) ho trovato alcuni esempi di questo non cortocircuito. Si potrebbe anche esaminare l'uso di dichiarazioni di casi. –