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

A consulta SQL que funciona bem no SSMS é muito lenta no ASP.NET


Há todos os tipos de coisas que podem estar acontecendo.

Primeiro, Ivan G. está certo de que os parâmetros de conexão e as opções SET podem ser diferentes entre o SSMS e seu cliente ASP.NET. Isso é algo que vale a pena investigar no Profiler, se você tiver acesso a ele.

Segundo, se você executou sua consulta várias vezes seguidas no SSMS, é possível que os resultados estejam sendo armazenados em cache e é por isso que ela é executada tão rápido no SSMS. Se ele for executado lentamente na primeira vez que você abrir o SSMS e tentar executá-lo, mas depois acelerar, isso é um sinal de que há armazenamento em cache.

Quanto ao motivo pelo qual adicionar uma cláusula extra a uma junção pode atrasar as coisas, é difícil dizer por que sem saber mais sobre suas tabelas, mas não é impossível que isso possa ter feito isso. Existe um índice sobre BATCH_INGR que inclui tanto FACTORY e INGR_CODE ? Você pode precisar de um agora que está incluindo INGR_CODE em suas condições de associação.

A melhor maneira de descobrir é observar o plano de consulta com e sem o INGR_CODE cláusula e veja como ela difere. O valor do custo para uma consulta é maior do que para a outra? Existem varreduras de tabela onde não havia antes? Uma busca de índice se transformou em uma varredura de índice?