sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cambiar SI EXISTE (SELECCIONA 1 DE) a SI EXISTE (SELECCIONA ARRIBA 1 DE) tiene algún efecto secundario?

No, no debería haber diferencia. EXISTS se rescata tan pronto como ha encontrado una sola fila coincidente. Es por eso que siempre se prefiere a, p. (select COUNT(*) from ...) > 0 - un COUNT obligaría a considerar todas las filas.

Si crea las siguientes cuatro consultas:

select * from sys.objects
select top 1 * from sys.objects
select 1 where exists(select * from sys.objects)
select 1 where exists(select top 1 * from sys.objects)

Y active los planes de ejecución, verá que la segunda consulta genera un plan de ejecución que incluye un TOP operador. Las consultas 3 y 4 producen idénticas planes El TOP se ignora.