Bonsoir,
J'ai une grosse base de donnée sous mysql : ~1M lignes pour une centaine de colonnes.
L'utilisateur effectue une recherche sur cette base de données via un input d'un formulaire php.
La page résultat est de la forme :
Résultats de la recherche : $nb_resultat_total
Résultat 1
..
Résultat 100
[Bouton premier_Page][Bouton avant_Page][Bouton après_Page][Bouton dernière_Page]
Il y a donc deux requêtes :
Le calcul de $nb_resultat_total
SELECT count(*) FROM table WHERE champZ LIKE $_POST['UserInput']
Et les résultats
SELECT champA, champB, .. FROM table WHERE champZ=$_POST['UserInput'] LIMIT 0, 100
Quand l'utilisateur appuie sur un des 4 boutons, les deux requêtes sont réexecutées. Le LIMIT de la deuxième requête varie en fonction de la page actuelle où l'utilisateur se trouve.
Ma question est la suivante :
La requête du calcul du nombre de résultats est longue, environ 2-3 sec.
Et malheureusement, vu comment j'ai codé la page, cette requête est réexecutée pour afficher les pages avant/après/etc ce qui devient fort lourd.
Auriez-vous un conseil pour améliorer la rapidité d'affichage de la page ?
PS : Je pensais réutiliser le nombre de résultats calculer une première fois en envoyant cette valeur par requête post.. Mais cela crée une faille possible si l'utilisateur malveillant change les données de la requête post à la volée..
Merci pour votre aide
Partager