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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top