Quel est le meilleur moyen d'obtenir un nombre approximatif de résultats de recherche à partir d'une requête?

StackOverflow https://stackoverflow.com/questions/600972

Question

pour le décrire un peu plus, si j’ai la carte graphique d’une région qui, une fois cliquée, une requête est exécutée pour obtenir plus d’informations sur cette région.

mon client veut que je affiche un nombre approximatif de Résultats de la recherche en survolant la carte-image de cette région.

Comment puis-je mettre en cache le problème? ou obtenir ce numéro sans épuiser les ressources de mémoire de mon serveur?

btw im en utilisant php et mysql si c'est une information nécessaire.

Était-ce utile?

La solution

Vous pouvez exécuter périodiquement la requête, puis stocker les résultats (dans une autre table, par exemple).

Les résultats ne seraient pas absolument à jour, mais constitueraient une bonne approximation et réduiraient la charge sur le serveur.

Autres conseils

MySQL peut vous indiquer le nombre approximatif de lignes qui seront renvoyées par votre requête sans exécuter la requête. C’est la raison pour laquelle la syntaxe EXPLAIN est utilisée.

Vous exécutez la requête avec "EXPLAIN" avant "SELECT", puis multipliez tous les résultats dans la colonne des lignes.

La précision est très variable. Cela peut fonctionner avec certains types de requêtes, mais être inutile sur d'autres. Il utilise des statistiques sur vos données conservées par l’optimiseur de MySQL.

Remarque: utiliser ANALYZE TABLE dans le tableau régulièrement (une fois par mois) peut aider à améliorer la précision de ces estimations.

Vous pouvez créer une autre table avec les identifiants des régions, puis créer un script qui s'exécute sur toutes les régions à une heure lente (la nuit par exemple) et remplit cette table supplémentaire avec les données.

Ensuite, lorsque vous survolez, vous obtenez l'ID de cette nouvelle table et il a tout au plus une journée.

Le problème avec cela pourrait être que vous n’avez pas un temps lent ou que le parcours effectué la nuit prend beaucoup de temps et est très lourd en processus.

ÉDITER à votre commentaire.

Si vous le pouvez, prenez une grande région ou un pays, effectuez une requête sur cette région dans le navigateur SQL de votre choix et consultez le temps qu'il faudrait.

Si c’est trop, vous pouvez le distribuer pour que certains pays s’exécutent à certaines heures, petits pays ensemble et grands pays seuls à un moment donné.

Craignez-vous que vous ne souhaitiez absolument pas consulter cette base de données lorsque cet événement survient ou pensez-vous que la requête sera trop lente et que vous souhaitez obtenir les informations de la base de données? , mais plus vite?

Si votre requête est lente, vous pouvez l’ajuster ou utiliser certaines des suggestions déjà données.

Alternativement, et pour éviter tout problème de base de données, il semble que vous ayez un nombre fini de régions sur cette carte. Vous pouvez exécuter une requête périodiquement pour toutes les régions et conserver les numéros en mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top