2013-02-04 4 views
2

J'essaie de faire une pagination aussi efficace que possible. Actuellement, je travaille avec une base de données qui a plus de 5 millions d'enregistrements.Java MySQL pagination

J'ai essayé avec LIMIT pageSize, startIndex, comme ceci: Select (a.id) De l'article ........ un limite de 50, 0 Ici, le pageSize est 50 et startIndex = 0.

Mais ce n'est bon que si vous ne feuilletez pas les pages en profondeur. La solution était de ne pas utiliser startIndex, mais seulement le pageSize:

Select (a.id) De l'article, une ordonnance ........ PAR LA LIMITE a.id 50

Page suivante serait la suivante: SELECT (a.id) FROM Article a O WH a.id> lasId ORDER BY a.id

Mais sans startIndex, il est seulement possible d'avancer, et seulement un pas en arrière.

Existe-t-il une meilleure façon de faire de la pagination en Java et Mysql?

+0

Je ne sais pas pourquoi vous pensez que la technique LIMIT n'est bon que si vous n'allez pas trop loin dans les pages. Vous pouvez simplement passer à travers eux 50 enregistrements à la fois, en changeant le décalage (aka startIndex) comme vous allez. – jfrank

Répondre

0

Vous pouvez toujours le faire:

int pageNum = ?; 
int pageLength = 50; 

String query = String.format(
    "SELECT ... LIMIT %d, %d", 
    pageNum * pageLength, 
    pageLength 
);