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:
si je fais:
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
va-t-il me renvoyer, dans l'ordre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from TableA where col1 > 'aaa1' and rownum < 3 order by col1
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
Partager