Recherche dans une grosse BDD MySQL ; lenteur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Recherche dans une grosse BDD MySQL ; lenteur

Re: Recherche dans une grosse BDD MySQL ; lenteur

par MagicPHP » 27 janv. 2012, 04:35

Tu peux aussi regarder du côté de http://framework.zend.com/manual/fr/zen ... rview.html

Re: Recherche dans une grosse BDD MySQL ; lenteur

par Web33 » 22 déc. 2011, 12:32

Bonjour et merci de ta réponse,
En même temps que je rédigeais ma question, j'étais en train de mettre en place des index Fulltext. Les résultats ont l'air assez pertinents et bcp plus rapides en effet.
J'ai jeté un oeil sur Sphinx, cela nécessite d'avoir la main sur le serveur; mais en effet cela semble être largement utilisé...

Re: Recherche dans une grosse BDD MySQL ; lenteur

par Yosh » 22 déc. 2011, 12:17

Salut,

Une première piste est d'utiliser des index FULLTEXT (seulement autorisé sur des table MyIsam il me semble), ce qui te permettra de faire des requêtes du type

WHERE MATCH (title,body) AGAINST ('database');

Ce qui est plus performant qu'un LIKE et te permet de gérer la pertinence des résultats.

http://dev.mysql.com/doc/refman/5.0/fr/ ... earch.html

Concernant les gros acteurs du web, je sais que certains utilise des moteurs de recherche spécifique, comme par exemple Sphinx.

Un peu de lecture:

http://sphinxsearch.com/
http://xf.iksaif.net/blog/index.php?pos ... troduction

Recherche dans une grosse BDD MySQL ; lenteur

par Web33 » 22 déc. 2011, 11:08

Bonjour,
Je travaille actuellement sur une base de données comportant plusieurs millions d'enregistrements.
Je développe un moteur de recherche (pour l'instant, je ne cherche sur un seul champ); le problème est que le temps de réponse est exagérément long.
La recherche de terme exact est très rapide, grâce a l'indexation de ce champ.
En revanche, la recherche partielle (avec des LIKE %%) est celle qui prend les 99 % du temps requis. Ce qui est normal, les index ne servant à rien dans le cas de recherches partielles.
Question, comment améliorer ce temps de réponse ? De façon à le rendre acceptable.
Quelle(s) technique(s) utilisent des gros sites tels qu'Amazon ou Ebay , pour effectuer des recherches ultra rapides sur des bases énormes ?
Merci à vous par avance,
Bien cordialement