Bonjour,

Nous avons implémenté un système de paging basique, comme décrit dans la plupart des docs Oracle, sous forme d'inline views. Mais je trouve ça assez couteux et pas très efficace :-/ à part renvoyer un ResultSet plus petit ça n'allège pas vraiment le boulot du serveur DB.

Après avoir parlé avec un copain, je me demandais si faire un truc du genre ne serait pas plus efficace:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
select * from TestTable where col > lastPreviousReturnedCol and rownum < 15 order by col
 
où lastPreviousReturnedCol = valeur de col à la ligne 14

Je ne sais pas si je suis clair? ^^ en fait prendre prendre les 15 prochaines lignes à partir de la dernière valeur renvoyée par la dernière requête.

Ceci fonctionne évidemment si, par défaut, les colonnes sont 'processées' dans l'ordre par Oracle.

Rhem... pas très clair ^^ ==> petit exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10

TableA
-------
col1     
aaa1    
ddd2
bbb3
ccc4
eee5
si je fais:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select * from TableA where col1 > 'aaa1' and rownum < 3 order by col1
va-t-il me renvoyer, dans l'ordre:
bbb3
ddd2

ou est-ce que ça pourrait aussi être:
ccc4
eee5


En gros, est-ce que Oracle va me renvoyer les premières valeurs 'juste plus grandes' ou n'importe lesquelles?

Peut-être que ça dépend s'il y a un index ou pas aussi?

Bon, j'espère que je n'embrouille pas trop tout ^^

Merci