Oracle
 sql >> Database >  >> RDS >> Oracle

scarse prestazioni di selezione di Hibernate rispetto all'esecuzione diretta:come eseguire il debug?

Grazie a tutti per l'aiuto. Dopo un lungo periodo di lotta con quel problema, finalmente la risposta di kaliatech mi ha aiutato a risolvere il problema.

Prima di tutto, ho commesso un terribile errore nella mia domanda. L'ho scritto:

L'esecuzione di questa query con il database locale è molto veloce, ma utilizzarla in remoto è davvero scadente.

Come non è del tutto vero. La query che ho fatto in Hibernate è simile a quella in alto:

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

Ma la query effettiva che ho fatto con SQL PLus o Navicat, ad esempio, era:

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

Si noti che la prima query select inizia:select s.* ... e il secondo è select * ... . E questa era la ragione di tali scarse prestazioni. Ora entrambe le query vengono completate in pochissimo tempo. La domanda è, qual è la differenza:problema di prestazioni:differenza tra select s.* vs select *