Veuillez ajouter un commentaire si vous avez besoin de plus d'informations pour répondre à cette question.Pagination avec un produit cartésien
Nous avons une requête qui renvoie un produit cartésien. Comme il y a beaucoup de résultats, il y a potentiellement une tonne d'objets qui s'hydratent. Nous aimerions faire une pagination simple sur la fin de la base de données, donc c'est rapide, et donc il tire n résultats à partir de la ligne n * page où n est dit, 100.
Le problème que nous rencontrons est qu'un distinct
est en cours sur la requête afin de ne renvoyer que les lignes nécessaires. Pour cette raison, même si nous avons le numéro de page, nous n'aurions aucune idée par où commencer ou arrêter sans faire la requête pour voir d'abord le départ. point (c'est-à-dire que nous ne pouvons pas utiliser rownum), et potentiellement en boucle jusqu'à ce que nous obtenions 100 résultats, vous avez l'idée. C'est désordonné.
Si nécessaire, nous pouvons faire SQL directement, mais quelque chose comme refactoring de la table n'est pas une option.
De toute façon, je ne peux pas imaginer que nous sommes les premiers à jamais rencontrer la situation, alors j'aimerais savoir s'il existe un moyen de le faire.
Merci d'avance!
EDIT: @ nicolas78 a posté un commentaire qui décrit exactement la situation.
Je commence à avoir une idée vague de ce que vous faites. En gros, vous ne savez pas comment répondre à la 101ème ligne de votre jeu de résultats, car elle est basée sur deux paramètres et beaucoup de combinaisons sont rejetées? Si oui, je ne sais pas comment prédire cela (je suppose que le problème n'est pas de pagayer un ou un autre mais de sauter à quelque chose comme la page 5 où vous n'avez aucune idée de comment les obtenir, non?). ce qui n'est pas très utile - juste essayer de clarifier les conditions. – Nicolas78
oui, c'est exactement le problème. même si nous demandons 100 résultats, tout ce que nous pourrions obtenir est 67. nous n'avons aucune idée de la ligne à laquelle commencer à la page n –