SQL ESISTE prestazioni
-
12-10-2019 - |
Domanda
Capisco che i controlli SQL EXISTS
per l'esistenza di righe, tuttavia vuol valutare l'intera espressione? Così, per esempio, sarebbe qualcosa di simile:
IF EXISTS (SELECT TOP 1 1 FROM table WITH (NOLOCK))
BEGIN
...
END
Puoi essere più veloce di qualcosa di simile a questo:
IF EXISTS (SELECT 1 FROM table WITH (NOLOCK))
BEGIN
...
END
Soluzione
Sia quelli dovrebbe funzionare esattamente lo stesso. SQL Server tiene conto che EXISTS
è un'operazione in corto circuito e non valuta il risultato di ritorno, solo controlli per vedere se ci a causa di ritorno!
Altri suggerimenti
Esiste si ferma dopo il primo colpo, perché poi i Valuta expression true, così la parte superiore (1) -parte non è necessaria.
No, non sarà.
usi SQL Server
TOP
nel piano per valutare EXISTS
.
Il bilancio di generare piani di query identiche quindi non c'è differenza. Il secondo esempio è più facile da leggere a mio parere.