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

szybsze zapytanie stronicowania Oracle

Właściwie nie mam teraz dostępności Oracle, ale najlepsze zapytanie SQL do stronicowania jest na pewno następujące

select *
from (
        select rownum as rn, a.*
        from (
                select *
                from my_table
                order by ....a_unique_criteria...
            ) a
    )
where rownum <= :size
    and rn >  (:page-1)*:size

http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

Aby osiągnąć spójne stronicowanie powinieneś uporządkować wiersze, używając unikalnych kryteriów , dzięki temu unikniesz załadowania dla strony X wiersza, który już załadowałeś dla strony Y ( !=X ).

EDYCJA:

1) Porządkowanie wierszy przy użyciu unikalnych kryteriów oznacza uporządkowanie danych w taki sposób, aby każdy wiersz zachował tę samą pozycję przy każdym wykonaniu zapytania

2) Indeks zawierający wszystkie wyrażenia użyte w klauzuli ORDER BY pomoże szybciej uzyskać wyniki, szczególnie dla pierwszych stron. Z tym indeksem plan wykonania wybrany przez optymalizator nie musi sortować wierszy, ponieważ zwróci wiersze przewijające indeks w naturalnej kolejności.

3) Nawiasem mówiąc, najszybszym sposobem na strony wyników zapytania jest wykonanie zapytania tylko raz i obsłużenie całego przepływu ze strony aplikacji.



  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 - Jak wygenerować skrypt od programisty sql

  2. SQL — Znajdź brakujące wartości int w przeważnie uporządkowanych szeregach sekwencyjnych

  3. Narzędzia programistyczne umożliwiające bezpośredni dostęp do baz danych

  4. czy klucz obcy zawsze odwołuje się do unikalnego klucza w innej tabeli?

  5. Powielanie rekordów w celu wypełnienia luki między datami