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

A mesma consulta SQL demora mais para ser executada em um banco de dados do que em outro banco de dados no mesmo servidor


O fato de você ter dois bancos de dados no mesmo servidor e com o mesmo conjunto de dados (como você disse) não garante o mesmo plano de execução.

Aqui estão alguns dos motivos pelos quais o plano de consulta pode ser diferente:
    Os arquivos
  • mdf e ldf (para cada banco de dados) estão em unidades diferentes. Se o onedrives for mais rápido, esse banco de dados também executará a consulta mais rapidamente.
  • estatísticas paradas. Se você tiver um banco de dados com estatísticas mais recentes que o outro, o SQL terá mais chances de escolher um plano de execução adequado (e
    mais rápido).
  • Índices:sei que você disse que ambos são idênticos, mas gostaria de verificar se você tem o mesmo tipo de índices em ambos.

Concentre-se em ver por que a consulta está lenta ou veja o plano de execução real, em vez de comparar. Verificar o plano de execução real para a consulta lenta fornecerá uma dica do motivo pelo qual a execução está mais lenta.

Além disso, eu não adicionaria uma instrução NO LOCK para corrigir o problema. Na minha experiência, as consultas mais lentas podem ser ajustadas por meio de código ou índice, em vez de adicionar uma dica NO LOCK que pode resultar em conjuntos de resultados modificados ou antigos, dependendo de suas transações.