Oracle
 sql >> Datenbank >  >> RDS >> Oracle

schlechte Hibernate-Auswahlleistung im Vergleich zur direkten Ausführung - wie debuggen?

Vielen Dank für die Hilfe. Nachdem ich lange mit diesem Problem gekämpft hatte, half mir endlich die Antwort von kaliatech, das Problem zu debuggen.

Zunächst einmal habe ich einen schrecklichen Fehler in meiner Frage gemacht. Das habe ich geschrieben:

Das Ausführen dieser Abfrage mit der lokalen Datenbank ist wirklich schnell, aber die Verwendung aus der Ferne ist wirklich schlecht.

Da es nicht ganz stimmt. Die Abfrage, die ich in Hibernate gemacht habe, sieht so aus:

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

Aber die eigentliche Abfrage, die ich zum Beispiel mit SQL PLus oder Navicat gemacht habe, war:

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

Bitte beachten Sie, dass die Auswahl der ersten Abfrage beginnt:select s.* ... und das zweite ist select * ... . Und das war der Grund für diese schlechte Leistung. Jetzt sind beide Abfragen im Handumdrehen erledigt. Die Frage ist, was der Unterschied ist:Leistungsproblem:Unterschied zwischen select s.* vs select *