Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Melhor prática para paginação no Oracle?


Se você já estiver usando análises (ROW_NUMBER() OVER ... ), adicionar outra função analítica no mesmo particionamento adicionará um custo insignificante à consulta.

Por outro lado, existem muitas outras maneiras de fazer paginação, uma delas usando rownum :
SELECT * 
  FROM (SELECT A.*, rownum rn
          FROM (SELECT *
                  FROM your_table
                 ORDER BY col) A
         WHERE rownum <= :Y)
 WHERE rn >= :X

Este método será superior se você tiver um índice apropriado na coluna de ordenação. Nesse caso, pode ser mais eficiente usar duas consultas (uma para o número total de linhas, uma para o resultado).

Ambos os métodos são apropriados, mas, em geral, se você deseja o número de linhas e um conjunto de paginação, usar a análise é mais eficiente porque você consulta as linhas apenas uma vez.