Optimisation MySQL? - PHP - Programmation
Marsh Posté le 07-10-2003 à 16:39:30
porksoda a écrit : |
Indexer mot_mot ?
Pardon si c'est une connerie, j'ai que peu de notions en BDD
Marsh Posté le 07-10-2003 à 16:41:55
non, c'est pas mal, mais ça va faire un index très très gros ... cela dit, vu le caractère statique d'un dictionaire, ça va
Marsh Posté le 07-10-2003 à 16:48:36
Oh!
Vous m'en apprenez toute une. Je pensais pas qu'on pouvait indexer du VARCHAR ! Je croyais que c'était réservé au numérique
Merci beaucoup, j'vais essayer ca!
De toutes façons Taz, la BD pèse déja 5MO alors que l'index soit gros ou pas...
Marsh Posté le 07-10-2003 à 16:51:33
Taz a écrit : non, c'est pas mal, mais ça va faire un index très très gros ... cela dit, vu le caractère statique d'un dictionaire, ça va |
Cool, j'ai pas dit une connerie
Marsh Posté le 07-10-2003 à 18:44:50
porksoda a écrit : Oh! |
..... euhhhhh t'as po du reflechir beaucoup sur le sujet quand même .... penses au moteur de recherche par exemple
Marsh Posté le 07-10-2003 à 18:50:42
Mouais mais les _vrais_ moteur de recherche dans ma tête n'utilise pas MySQL mais quelque chose de plus robuste et avec cette fonctionnalité que je pensais MySQL n'avait pas!
Marsh Posté le 07-10-2003 à 19:28:59
A la rigueur, tu ajoutes une colonne indexée avec le premier caractère du mot.
Et dans ta requête, tu fais :
SELECT * FROM mots WHERE mot_first = 'L' AND mot_mot = 'Lent'
Normalement, il va d'abord rechercher les lignes respectant par 'L' (grace à l'index), puis comparer le mot complet seulement sur ces lignes
(à vérifier avec un explain)
Marsh Posté le 07-10-2003 à 20:50:09
pourquoi l'index te parait mauvais ?
edit : il me semble que y a une techinque pour indexer un champ textuel sur ses n premiers caractères, pas besoin de réinventer la roue
Marsh Posté le 07-10-2003 à 20:58:07
bon, pour pas faire de jaloux...
Hey, merci Taz, ca semble bien ton truc.
Marsh Posté le 07-10-2003 à 21:20:00
En s'y mettant à plusieurs, on va bien réussir à faire quelque chose de pas trop mal
Marsh Posté le 07-10-2003 à 21:39:04
J'essaie de faire un projet du style débilitron.com mais un peu plus sémantique. Mon dico devrait contenir des synonymes, antonymes, intensité des adjectif, etc. D'ici le temps qu'il soit monté, j'aurai plus de cheveux (je me l'ai aurai probablement tous arraché!)
Je sais, c'est pas très innovateur, mais ca me tente trop.
Marsh Posté le 08-10-2003 à 01:08:43
porksoda a écrit : Oh! |
C'est rien 5 Mo. Tu as du faire du travail de cochon oui... Le forum ici fait plusieurs giga, alors je ne pense pas que tes misérables 5 mo provoquent un timeout, à moins que tu aies un atari st en guise de serveur...
Marsh Posté le 08-10-2003 à 11:53:21
Ben c'est sur que sans index sur les colones du choix de recherche, ca donera jamais un système rapide.
Marsh Posté le 07-10-2003 à 15:49:00
Bonjour!
J'ai une base de données avec 360 000 enregistrements. C'est un dictionnaire. J'ai un index (INT) sur auto-increment. Quand je fais des SELECT's sur cette colonne, c'est rapide.
donc "SELECT * FROM mots WHERE mot_id = 344" est rapide
Mais quand je fais un SELECT sur le *texte* d'un mot donc:
"SELECT * FROM mots WHERE mot_mot = 'Lent'"
CA c'est TRÈS lent Je dois faire ce SELECT quand même assez souvent. Ca ralentis au point au j'ai un script timeout
Une idée?
Merci!