2012-10-10 13 views
5

estoy usando SQL Server 2008 R2Diferencia entre las diferentes formas de escribir IF Existe?

sólo quiero probar si existe algo en una mesa

IF EXISTS (SELECT * FROM ta WHERE ca = 'abc') PRINT 'YES' 
IF EXISTS (SELECT ca FROM ta WHERE ca = 'abc') PRINT 'YES' 
IF EXISTS (SELECT 1 FROM ta WHERE ca = 'abc') PRINT 'YES' 
IF EXISTS (SELECT (1) FROM ta WHERE ca = 'abc') PRINT 'YES' 
IF EXISTS (SELECT TOP 1 1 FROM ta WHERE ca = 'abc') PRINT 'YES' 

¿Tienen alguna diferencia en consecuencia/efecto secundario/rendimiento (no importa cuán pequeño)?

Gracias

Respuesta

6

absolutamente ninguna diferencia - la IF EXISTS(...) sólo comprueba la existencia de filas sobre la base de la WHERE cláusula en su estado de cuenta.

Todo lo demás en la declaración es irrelevante, no hace ninguna diferencia si usa SELECT * o SELECT 1 o SELECT TOP 1 *. Incluso usando SELECT * .... hace NO seleccione todas las columnas de la tabla - nuevamente comprueba la existencia de los datos basados ​​en la cláusula WHERE.

Los cinco consultas tienen exactamente el mismo plan de ejecución

+0

Gracias! Entonces, ¿está implicando que esas consultas tienen algunas diferencias cuando no están vinculadas con IF EXISTS? – user1589188

+0

@ user1589188: claro, si tiene un "SELECT *" "independiente", eso es malo porque obtiene (a) todas las columnas (¿realmente necesita *** todas las columnas ***?), (B) Usted no especifica qué columnas desea (podría sorprender gravemente si se agrega una columna BLOB como una imagen en algún momento) y así sucesivamente. Cuando no está dentro de un 'IF EXISTS (..)' Yo abogo por ** nunca ** use 'SELECT *' (definitivamente no en su código de producción) - siempre use ** explicit ** listas de columnas, y tome como pocas columnas como realmente lo necesitas –

3

No hay ninguna diferencia, el plan de ejecución parece ser el mismo.

enter image description here enter image description here enter image description here

+1

¡Guau! ¡Gran entrada! ¡Gracias por tu esfuerzo! – user1589188

+0

@ user1589188, de nada – Habib

+0

@Habib qué herramienta ha utilizado para la visualización y si hay algunas más que puede recomendar. –

Cuestiones relacionadas