SI EXISTE en T-SQL
Si tenemos una instrucción SELECT
dentro de una IF EXISTS
, ¿la ejecución se detiene tan pronto como encuentra un registro en la tabla? Por ejemplo:
IF EXISTS(SELECT * FROM table1 WHERE Name='John' )
return 1
else
return 0
Si existe una fila en la tabla con el nombre = John, ¿detiene la ejecución y devuelve 1 o atraviesa toda la tabla buscando más coincidencias?
2 answers
Sí, detiene la ejecución, por lo que siempre se prefiere esto a COUNT > 0
, que a menudo no lo hará.
Si observa el plan de ejecución, verá que el número real de filas que salen de table1
no será más de 1, independientemente del número de registros coincidentes.
Vea este artículo para una discusión sobre EXISTS vs COUNT
Si combina consultas EXISTS() AND EXISTS()
sin embargo, no puede confiar en cortocircuitar. es decir, si la primera consulta es falsa y por lo tanto toda la expresión es false la segunda consulta todavía se ejecuta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:21
No hay necesidad de "else" en este caso:
IF EXISTS(SELECT * FROM table1 WHERE Name='John' ) return 1
return 0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-11 19:06:59