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

O Hibernate Query roda lento no sistema, mas rápido quando executado diretamente


Pela descrição do seu problema, parece que você está cheirando parâmetros. Essencialmente, o SQL Server está criando um plano de consulta com base em um conjunto mais antigo de valores de parâmetro que foram passados ​​e que não criam um plano de execução efetivo para a consulta em execução no momento.

Normalmente, resolvo esse problema passando os valores de parâmetro para variáveis ​​locais e usando-os na minha consulta ou usando OPTION (RECOMPILE). No entanto, como você está usando o Hibernate, minha solução usual não é uma opção para você. Pelo que entendi, a melhor opção será usar o Hibernate para executar uma consulta SQL nativa usando prepareStatement() ou createSQLQuery() que, infelizmente, remove alguns dos benefícios de usar o Hibernate.