2010-08-20 12 views

risposta

7

Guardando nel manuale MySQL, sembrano davvero sinonimi.

e anche se non lo sono, io tendo a fidarmi Query Optimizer di scegliere la soluzione migliore.

+2

Ho letto anche questo, ma il documento ISNULL dice che CONDIVIDE alcuni comportamenti speciali con IS NULL, che mi ha spaventato. – Wiliam

+0

@Wiliam buon punto. Forse fare una prova è davvero il modo migliore per andare! –

+5

Eh? A mio avviso, "condivide comportamenti speciali" significa solo che sono strani, ma sono strani nello stesso * modo *. – Amadan

13

This thread è simile, anche se non esattamente su MySQL. Secondo il test mostrato qui:

IS NULL è più efficiente in quanto non richiede una scansione.

La ricerca è generalmente più veloce di una scansione poiché include solo record di qualifica, mentre la scansione include ogni riga. È spiegato in maggior dettaglio here.

Un'altra differenza (anche se non è performance) è la loro sintassi negazione:

IS NOT NULL /* using NOT operator */ 
! ISNULL() /* using exclamation mark */ 
+0

Grazie per aver fatto un breve riassunto! – Sikian

+3

Avviso per principianti; questo è solo più efficiente se la colonna è indicizzata :) –

+0

@ Ja͢ck, Se non è indicizzato quale useresti? – Pacerier