Oracle
 sql >> Database >  >> RDS >> Oracle

Best practice per l'impaginazione in Oracle?

Se stai già utilizzando l'analisi (ROW_NUMBER() OVER ... ) quindi l'aggiunta di un'altra funzione analitica sullo stesso partizionamento aggiungerà un costo trascurabile alla query.

D'altra parte, ci sono molti altri modi per eseguire l'impaginazione, uno dei quali usando rownum :

SELECT * 
  FROM (SELECT A.*, rownum rn
          FROM (SELECT *
                  FROM your_table
                 ORDER BY col) A
         WHERE rownum <= :Y)
 WHERE rn >= :X

Questo metodo sarà migliore se si dispone di un indice appropriato nella colonna dell'ordine. In questo caso, potrebbe essere più efficiente utilizzare due query (una per il numero totale di righe, una per il risultato).

Entrambi i metodi sono appropriati, ma in generale se si desidera impostare sia il numero di righe che un'impaginazione, l'utilizzo dell'analisi è più efficiente perché si interrogano le righe solo una volta.