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 *