Oracle
 sql >> Base de données >  >> RDS >> Oracle

Meilleure pratique pour la pagination dans Oracle ?

Si vous utilisez déjà Analytics (ROW_NUMBER() OVER ... ) puis ajouter une autre fonction analytique sur le même partitionnement ajoutera un coût négligeable à la requête.

D'autre part, il existe de nombreuses autres façons de faire la pagination, l'une d'entre elles utilisant rownum :

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

Cette méthode sera supérieure si vous avez un index approprié sur la colonne de commande. Dans ce cas, il peut être plus efficace d'utiliser deux requêtes (une pour le nombre total de lignes, une pour le résultat).

Les deux méthodes sont appropriées, mais en général, si vous souhaitez à la fois le nombre de lignes et un ensemble de pagination, l'utilisation d'analyses est plus efficace car vous n'interrogez les lignes qu'une seule fois.