Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:IF EXISTS desacelerando massivamente uma consulta


Você tentou executar a consulta original com o TOP 1? provavelmente será tão lento.

Às vezes, quando o otimizador pensa que algo é muito provável e retornará um vasto conjunto de dados com pouco esforço (ou seja, quase todos os registros serão retornados), ele escolhe principalmente junções de loop porque precisa apenas obter o primeiro e um A junção de loop é boa para obter apenas alguns registros. Quando isso não é verdade, leva uma eternidade e um dia para obter resultados.

No seu caso, parece muito raro, então essa escolha dói muito. Tente fazer algo como SELECT @count = COUNT(*) FROM ... e, em seguida, verificar se essa contagem é diferente de zero.