Oracle
 sql >> Baza danych >  >> RDS >> Oracle

słaba wydajność Hibernate select w porównaniu do bezpośredniego uruchamiania - jak debugować?

Dziękuję wszystkim za pomoc. Po długim czasie zmagania się z tym problemem, w końcu odpowiedź kaliatech pomogła mi rozwiązać problem.

Przede wszystkim popełniłem w swoim pytaniu straszny błąd. Napisałem, że:

Uruchamianie tego zapytania z lokalną bazą danych jest naprawdę szybkie, ale używanie go zdalnie jest naprawdę słabe.

Bo to nie do końca prawda. Zapytanie, które wykonałem w Hibernate, wygląda tak samo:

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

Ale rzeczywiste zapytanie, które wykonałem na przykład w SQL PLus lub Navicat, brzmiało:

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

Proszę zauważyć, że pierwsze zapytanie select zaczyna się:select s.* ... a drugi to select * ... . I to było przyczyną tak kiepskich wyników. Teraz oba zapytania są realizowane w mgnieniu oka. Pytanie brzmi, jaka jest różnica:problem z wydajnością:różnica między select s.* a select *



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie wiadomości ze skrzynki pocztowej za pomocą interfejsu API Mail_Client PL/SQL

  2. Jak sprawdzić, czy plik istnieje w PL/SQL?

  3. Limit czasu dla metody OracleDataReader.Read

  4. Oracle — jak uzyskać rzeczywisty rozmiar konkretnego wiersza?

  5. Oracle:jak uzyskać procent całości za pomocą zapytania?