Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

desempenho de seleção do Hibernate ruim em comparação com a execução direta - como depurar?


Obrigado a todos pela ajuda. Depois de muito tempo lutando com esse problema, finalmente a resposta da kaliatech me ajudou a depurar o problema.

Em primeiro lugar, cometi um erro terrível na minha pergunta. Eu escrevi isso:

Executar essa consulta com banco de dados local é muito rápido, mas usá-la remotamente é muito ruim.

Como não é totalmente verdade. A consulta que fiz no Hibernate se parece com a que está acima:
select s.* from sales_unit s left join sales_unit_relation r on (s.sales_unit_id = r.sales_unit_child_id) where r.sales_unit_child_id is null

Mas a consulta real que fiz com SQL PLus ou Navicat por exemplo foi:
select * from sales_unit s left join sales_unit_relation r on (s.sales_unit_id = r.sales_unit_child_id) where r.sales_unit_child_id is null

Observe que a primeira seleção de consulta inicia:select s.* ... e o segundo é select * ... . E esse foi o motivo de tão fraco desempenho. Agora, ambas as consultas são concluídas rapidamente. A questão é:qual é a diferença:problema de desempenho:diferença entre select s.* vs select *