Jonathan ROTH a écrit :
daniels a écrit :
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.

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.

Enseigne,adresse,cp,ville,activité,nom


Avez vous une solution, même si je doit changer de system.

1. MySQL (je suppose) réplique toute la base de données en mémoire pour chaque client connecté, à 100 octets par entrée, ta base fait 600Mo, vérifier que la mémoire vive du système est suffisante.

2. Les jonctions de tables sont lourdes, surtout sur des grosses BdD, et encore plus si c'est mal fait...

3. Lorsqu'on fait une sélection, il faut prendre l'habitude d'ordonner les champs, en premier ceux qui donneront le moins de résultats.

4. Pour rechercher 2 mots, tu peux soit utiliser le SGBD (SELECT WHERE a = b AND b=d), ou soit chercher 1 mot, puis chercher 1 mot dans les résultats. La deuxieme solution est plus lourde et moins propre, mais sur des bases de données énormes celà peut être une alternative acceptable.

Re,

Oui Mysql, la base fait environ 600mo + l'index fulltext on arrive à 12151Mo

Répondre à