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

ResultSet.next bardzo wolno tylko wtedy, gdy zapytanie zawiera ograniczenie FIRST_ROWS lub ROWNUM

Czy po dołączeniu podpowiedzi otrzymujesz różne plany zapytań? Zakładam, że robisz to na podstawie opisu problemu.

Kiedy wykonujesz zapytanie w Oracle, baza danych zazwyczaj nie materializuje całego zestawu wyników w dowolnym momencie (oczywiście może to być konieczne, jeśli określisz ORDER BY klauzula, która wymaga zmaterializowania wszystkich danych przed sortowaniem). Oracle nie zaczyna faktycznie materializować danych, dopóki klient nie zacznie pobierać danych. Wykonuje wystarczającą ilość zapytania, aby wygenerować dowolną liczbę wierszy, o których pobranie poprosił klient (co w twoim przypadku brzmi 10), zwraca te wyniki do klienta i czeka, aż klient zażąda więcej danych, zanim przejdzie do dalszego przetwarzania zapytanie.

Brzmi to tak, jakby FIRST_ROWS wskazówka jest uwzględniona, plan zapytania zmienia się w sposób, który powoduje, że jego wykonanie jest droższe. Oczywiście nie to jest celem FIRST_ROWS wskazówka. Celem jest nakazanie optymalizatorowi wygenerowania planu, który sprawi, że pobieranie pierwszych N wierszy będzie wydajniejsze, nawet jeśli pobranie wszystkich wierszy z zapytania będzie mniej wydajne. Powoduje to, że optymalizator faworyzuje takie rzeczy, jak skanowanie indeksu nad skanowaniem tabel, gdzie skanowanie tabeli może być ogólnie bardziej wydajne. Wygląda na to, że w twoim przypadku szacunki optymalizatora są nieprawidłowe i ostatecznie wybiera plan, który jest po prostu mniej wydajny. To często oznacza, że ​​niektóre statystyki dotyczące niektórych obiektów, do których odnosi się zapytanie, są niekompletne lub nieprawidłowe.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:zapytanie SQL, aby znaleźć wszystkie wyzwalacze należące do tabel?

  2. Czy mogę użyć VBA do przekazania hasła do połączenia z zewnętrzną bazą danych w programie Excel?

  3. ORA-00932:niespójne typy danych:oczekiwano - mam -

  4. sbt download artefakt z repozytorium chronionego hasłem - sterownik Oracle jdbc jako zarządzana zależność

  5. Korzystanie z VBS i rejestru w celu ustalenia, która wersja i sterowniki 32- i 64-bitowe Oracle są zainstalowane