Marc Grandmaire a écrit :
Le mercredi 14 novembre 2007 11:58, daniels a écrit :
Bonjour,
Bonjour,

Je réaliser un moteur de recherche sur une base de données d'entreprises
de 6 000 000 d'entrées 9 tables.
C'est 6M par table ou dans toutes les tables ?
Quels sont les liens entre les tables ?
Oups 1 table 9 champs
J'ai crée des index fultext pour 6 tables, lors d'une recherche sur 1
mot j'ai un résultat de recherche d'environ 0,11 secondes par contre si
je passe à 2 mots le temps de recherche passent à plus de 30.0 secondes
un temps nom acceptable pour une recherche.
La comme ça, ç'est dur à diagnostiquer...

Tes recherches sont du genre:
ville="stras" or ville="schiltig"
ou
adresse="rue des lilas" ou "impasse des lilas" ?
Y'a des jointures ?
Pas de jointure
Les recherches sont du genre :
garage strasbourg

dans les recherches j'ai rajouter +
requête :
+garage +strasbourg je passe de 30.0s à 4.0s

Explication :

Garage strasbourg
               Trouve les lignes qui contiennent au moins l'un de ces mots.
+Garage +strasbourg
               ... les deux mots.
Quelle est la base ? (utilise Postgres : ;-)
Mysql 4.1.11
Quelle mémoire est allouée au serveur sql ?
32M
Y'a des accès disques pendant les requêtes ?

Oui
Avez vous une solution, même si je doit changer de system.
Voir si ton serveur sql permet de montrer le plan de requete.
Ne pas forcément mettre des index partout (dans certains cas ça peut même ralentir).
Optimiser la config du serveur.
Réorganiser la base.
(...j'en oublie certainement...)
En dernier ressort, on sort le porte monnaie et on rentre dans l'escalade hardware classique (+ de ram, + de Mhz, + de CO2, ...).


Les recherches sont plutôt satisfaisante.
ex: +jardin +strasbourg  en 1.835 secondes

La ou cela coince encore, dans les recherche ou il y a plus de 500 000 résultat.
ex: +jardin +paris en 22.372 secondes

Répondre à