Oracle
 sql >> база данни >  >> RDS >> Oracle

oracle по-бързо пейджинг заявка

Всъщност нямам наличност на Oracle сега, но най-добрата SQL заявка за пейджинг е следната със сигурност

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

За постигане на последователно пейджиране трябва да подредите редове по уникален критерий , това ще избегне зареждането за страница X на ред, който вече сте заредили за страница Y ( !=X ).

РЕДАКТИРАНЕ:

1) Подреждане на редове с помощта на уникален критерий означава подреждане на данни по начин, при който всеки ред ще запази една и съща позиция при всяко изпълнение на заявката

2) Индекс с всички изрази, използвани в клаузата ORDER BY, ще помогне за по-бързо получаване на резултати, особено за първите страници. С този индекс планът за изпълнение, избран от оптимизатора, не трябва да сортира редовете, защото той ще върне редове, превъртащи индекса по естествения му ред.

3) Между другото, най-бързият начин за получаване на страница в резултат от заявка е да изпълните заявката само веднъж и да обработвате целия поток от страната на приложението.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Шифроване на парола в R - за свързване към Oracle DB с помощта на RODBC

  2. Използване на функцията Max() за избор на групови стойности

  3. Статичен срещу динамичен sql

  4. Функция DBTIMEZONE в Oracle

  5. Oracle ODP.Net с Entity Framework 6 - Доставчик, съвместим с база данни за Entity Framework, не можа да бъде намерен