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

SQL Server:SI EXISTE ralentizando masivamente una consulta

¿Intentó ejecutar la consulta original con TOP 1? lo más probable es que sea igual de lento.

A veces, cuando el optimizador piensa que algo es muy probable y devolverá un amplio conjunto de datos con poco esfuerzo (es decir, casi todos los registros se devolverán), elige principalmente uniones de bucle porque solo necesita obtener el primero y un loop join es bueno para obtener solo un par de registros. Cuando eso resulta no ser cierto, lleva una eternidad y un día obtener resultados.

En tu caso, parece que es muy raro, por lo que esta elección duele mucho. Intente hacer algo como SELECT @count = COUNT(*) FROM ... y luego verificar si ese conteo es distinto de cero.