J'ai une page de recherche écrite en PHP, et il faut chercher dans la base de données MySQL, et le résultat doit être triable. Cette page de recherche sera accessible par de nombreux utilisateurs (> 1000 à tout moment).Puis-je utiliser des tables temporaires MySQL pour stocker les résultats de recherche?
Cependant, il n'est pas possible de trier le résultat de la recherche dans MySQL, car cela serait très lent.
Je pense à stocker chaque résultat de recherche dans une table temporaire (non MySQL table temporaire), et le nom de la table est stockée dans une autre table de référence comme ceci:
| id | table_name | timeout |
-----------------------------
| 1 | result_1 | 10000 |
| 2 | result_2 | 10000 |
Ensuite, je peux utiliser la tables temporaires pour trier les résultats de la recherche chaque fois que nécessaire sans avoir à reconstruire (avec quelques modifications) la requête.
Chaque table sera supprimée, conformément au délai d'attente spécifié.
En supposant que je ne puisse pas modifier la structure des tables existantes utilisées dans la requête, est-ce une bonne solution ou existe-t-il de meilleurs moyens? Veuillez nous conseiller
Merci
avec MySQL devrait être plus rapide que presque toute alternative, une de ses des choses pour lesquelles un db est spécifié. –
Si vous avez besoin de classer les résultats de tri en fonction de la fréquence des mots clés ou d'une autre, utilisez une instruction de requête SQL pour générer des colonnes de tri supplémentaires. Il est rare que le stockage des résultats de la requête dans une nouvelle table entraîne des requêtes plus rapides - plus les données supplémentaires que vous insérez sont susceptibles de dégrader les performances, à mon avis. –
Je suis d'accord avec @Dagon. Pourquoi ne serait-il pas possible de trier le résultat dans mysql? Les systèmes de base de données sont conçus pour filtrer et trier rapidement. Peut-il s'agir d'un problème d'index ou de problème de conception de table? – iWantSimpleLife