Bonjour,
Question simple mais malgres mes recherche je ne trouve pas.
Contexte : Reprise d'un site intranet PHP / oracle
J'ai une requete qui retourne on va dire 5000 élements, hors il n'y en a que 20 qui sont affiché a chaque fois.
Voyant cela je change donc la requete en y injectant un rownum et en l'imbriquant avec une autre pouvoir faire une rownum between
principe:
Bref tout marche donc correctement mais je dois aussi faire le page par page, qui lui devient problématique car il était fait sur le nombre de résultat renvoyé par oracle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT rownum, a, b, c FROM ( SELECT rownum, a, b, c FROM d, e, f WHERE d.idx = e.idx AND e.idx2 = f.idx ORDER BY d.champ ) WHERE ROWNUM BETWEEN 0 AND 20
J'ai donc chercher un equivalent a SQL_CALC_FOUND_ROWS et ROW_FOUND() mais malheureusement cela ne semble exister a part CARD dans les statistique et je ne peux meme pas les recup en PHP.
Le probleme est surtout sur le temps d'execution.
La requete initiale prenait 9 sec, la version optimise un peu moins, si je rajoute une requete pour faire le count(*) de 7sec je rallonge mon temps d'execution => pas interressant.
Donc la question : Est-ce qu'il existe une solution permettant de retourner les elements ainsi que le nombre total a la maniere d'un SQL_CALC_FOUND_ROWS de mysql?
Partager