Oracle
 sql >> Base de données >  >> RDS >> Oracle

performances de sélection Hibernate médiocres par rapport à l'exécution directe - comment déboguer?

Merci à tous pour votre aide. Après une longue période de lutte avec ce problème, la réponse de kaliatech m'a finalement aidé à déboguer le problème.

Tout d'abord, j'ai fait une terrible erreur dans ma question. J'ai écrit ça :

Exécuter cette requête avec une base de données locale est très rapide, mais l'utiliser à distance est vraiment médiocre.

Comme ce n'est pas tout à fait vrai. La requête que j'ai faite dans Hibernate ressemble à celle-ci :

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

Mais la requête réelle que j'ai faite avec SQL PLus ou Navicat par exemple était :

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

Veuillez noter que la première requête select commence :select s.* ... et le second est select * ... . Et c'était la raison de ces mauvaises performances. Maintenant, les deux requêtes sont terminées en un rien de temps. La question est de savoir quelle est la différence :problème de performances :différence entre select s.* et select *