Sto usando SQL Server 2008 R2 e ho questa pseudo query (SP):
select ...
from ...
WHERE @LinkMode IS NULL
AND (myColumn IN (...very long-running query...))
...
...
Il problema è che l'esecuzione della query richiede molto tempo, anche se eseguo l'SP con @LinkMode=2
.
Come hai notato, la query di lunga durata dovrebbe essere eseguita solo se @LinkMode è null, il che non è il caso qui. Nel mio caso @LinkMode = 2!
Tuttavia, se lo cambio in:
select ...
from ...
WHERE 1=2
AND (myColumn IN (...very long time exeted query...))
...
...
la SP non correre veloce.
Ho già sentito che a volte l'ottimizzatore può ottimizzare l'ordine dei criteri.
Quindi chiedo:
Anche se l'ottimizzatore sceglie un percorso diverso, cosa può essere più veloce del controllo se
=null
? Voglio dire, penso che il controlloif a==null
sia molto più veloce rispetto all'esecuzione dell'altra query lunga ...Come posso forzare SQL Server per eseguire la query come l'ho scritta (lo stesso ordine)?