2010-08-20 12 views

Antwort

7

Betrachtet man das MySQL-Handbuch, scheinen sie wirklich Synonyme zu sein.

und selbst wenn sie es nicht sind, würde ich dazu neigen, den Abfrageoptimierer zu vertrauen, die beste Lösung zu wählen.

+2

Ich readed das auch, aber die ISNULL Doc sagt, dass SHARES einige spezielle Verhaltensweisen mit IS NULL, die mich erschrocken. – Wiliam

+0

@William guten Punkt. Vielleicht ist ein Testlauf der beste Weg! –

+5

Huh? In meinem Verständnis bedeutet "teilt besonderes Verhalten" nur, dass sie komisch sind, aber auf die gleiche Weise sind sie komisch. – Amadan

13

This thread ist ähnlich, obwohl nicht genau auf MySQL. Entsprechend dem dort gezeigten Test:

IS NULL ist effizienter, da es keinen Scan erfordert.

Die Suche ist in der Regel schneller als ein Scan, da nur qualifizierende Datensätze enthalten sind, während der Scan jede Zeile umfasst. Es wird näher erläutert here.

Ein weiterer Unterschied (obwohl es nicht die Leistung ist) ist die Negation Syntax:

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

Vielen Dank für eine kurze Zusammenfassung! – Sikian

+3

Neuwarnung; das ist nur effizienter, wenn die Spalte indexiert ist :) –

+0

@ Ja͢ck, Wenn es nicht indiziert ist, was würdest du verwenden? – Pacerier

Verwandte Themen