2010-08-20 27 views

Respuesta

7

Al mirar el manual de MySQL, parecen sinónimos.

e incluso si no lo son, yo tiendo a confiar en el optimizador de consultas para elegir la mejor solución.

+2

También lo he leído, pero el documento de ISNULL dice que comparte algunos comportamientos especiales con IS NULL, eso me asustó. – Wiliam

+0

@Wiliam buen punto. Tal vez hacer una prueba sea de hecho la mejor manera de hacerlo. –

+5

¿Eh? Según entiendo, "comparte un comportamiento especial" solo significa que son extraños, pero son raros de la misma * manera. – Amadan

13

This thread es similar, aunque no exactamente en MySQL. De acuerdo con la prueba que se muestra allí:

IS NULL es más eficiente ya que no requiere un escaneo.

Buscar es generalmente más rápido que un escaneo, ya que solo incluye los registros que califican, mientras que el escaneo incluye cada fila. Se explica con más detalle here.

Otra diferencia (aunque no es el rendimiento) es su sintaxis negación:

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

¡Gracias por hacer un resumen conciso! – Sikian

+3

Aviso de novato; esto solo es más eficiente si la columna está indexada :) –

+0

@ Ja͢ck, si no está indexada, ¿cuál usaría? – Pacerier

Cuestiones relacionadas