Optimisation MySQL?

Optimisation MySQL? - PHP - Programmation

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   :sleep:  
 
Une idée?
 
Merci!

Reply

Marsh Posté le 07-10-2003 à 15:49:00   

Reply

Marsh Posté le 07-10-2003 à 16:39:30    

porksoda a écrit :


 
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   :sleep:  
 
Une idée?
 
Merci!
 


 
Indexer mot_mot ?
 
Pardon si c'est une connerie, j'ai que peu de notions en BDD :)


---------------
Ex-fumeur en quête d'identité.
Reply

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

Reply

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 !  :D 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...
 


Message édité par porksoda le 07-10-2003 à 16:51:07
Reply

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  [:audi]


---------------
Ex-fumeur en quête d'identité.
Reply

Marsh Posté le 07-10-2003 à 18:44:50    

porksoda a écrit :

Oh!
 
Vous m'en apprenez toute une. Je pensais pas qu'on pouvait indexer du VARCHAR !  :D Je croyais que c'était réservé au numérique


[:w3c compliant] ..... euhhhhh t'as po du reflechir beaucoup sur le sujet quand même .... penses au moteur de recherche par exemple  :ange:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

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! :)
 

Reply

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)


Message édité par mrbebert le 07-10-2003 à 19:29:44
Reply

Marsh Posté le 07-10-2003 à 20:40:09    


Hey, merci mrBebert, ca semble bien ton truc.
 

Reply

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


Message édité par Taz le 07-10-2003 à 20:51:02
Reply

Marsh Posté le 07-10-2003 à 20:50:09   

Reply

Marsh Posté le 07-10-2003 à 20:52:09    

Reply

Marsh Posté le 07-10-2003 à 20:58:07    

bon, pour pas faire de jaloux...
 
Hey, merci Taz, ca semble bien ton truc.
 
:P

Reply

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 :D

Reply

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é!) :lol:
 
Je sais, c'est pas très innovateur, mais ca me tente trop.
 


Message édité par porksoda le 07-10-2003 à 21:43:03
Reply

Marsh Posté le 08-10-2003 à 01:08:43    

porksoda a écrit :

Oh!
 
De toutes façons Taz, la BD pèse déja 5MO alors que l'index soit gros ou pas...
 
 


 
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...  :D


Message édité par Hermes le Messager le 08-10-2003 à 12:31:55
Reply

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. ;)

Reply

Marsh Posté le 08-10-2003 à 14:37:33    

j'ai bien noté, merci les amis :P

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed