BINARY() de MySQL vraiment lent...

BINARY() de MySQL vraiment lent... - PHP - Programmation

Marsh Posté le 27-11-2003 à 17:33:10    


 
Bonjour!
 
J'ai une colonne indexée, sur la quelle je dois faire une requête du genre:
 

Code :
  1. SELECT * FROM mots WHERE BINARY(mot_mot) = BINARY('$valeur')


 
Mais c'est leeeeeeeeent. mot_mot était en VARCHAR(30), on m'a dit de convertir cette colonne en BLOB (BINARY) ca devrait accélérer. Malheureusement, pas du tout.
 
Z'avez une idée? Le but d'utiliser BINARY est que MySQL fasse la différence entre 'é' et 'ê', 'e' etc...
 
Merci!  :lol:  
 
 
 

Reply

Marsh Posté le 27-11-2003 à 17:33:10   

Reply

Marsh Posté le 27-11-2003 à 20:22:39    

Fais une vérification sur les données extraites. (ie. pas dans la requête)
 
Tu ne devrais pas avoir beaucoup d'enregistrements retournés, il suffit de prendre le bon.


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 27-11-2003 à 20:54:14    

en fait, j'en ai qu'un. C'est sur.

Reply

Marsh Posté le 27-11-2003 à 21:01:43    

Je reformule : tu sélectionnes sans tenir compte des accents, puis tu testes les résultats obtenus pour ne garder que le bon. (s'il existe)
 
C'est plus clair ?


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 27-11-2003 à 21:23:31    

ahhhh... :ouch: je vois, merci!


Message édité par porksoda le 27-11-2003 à 21:24:04
Reply

Marsh Posté le 28-11-2003 à 01:04:14    

euh en tous cas le coup de changer le varchar en blob c clair que ct un mauvais plan [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-11-2003 à 09:43:27    

Tu peux spécifier les règles de comparaison au niveau :
 
Du serveur
De la base
De la table
Du champs
De la connexion
De la requête
 
http://www.mysql.com/doc/en/Charset-MySQL.html
 
Par exemple pour un champs :
 

CREATE TABLE Table1
(
   column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_bin
);


 
Dans une requête de ce genre :
 
select * from Table1 where column1 = 'teubé'
 
La règle précise que la 'COLLATION' du champs est prioritaire par rapport au litéral : http://www.mysql.com/doc/en/Charse [...] ricky.html
 
Si tu a la main su le serveur, tu peux changer la 'COLLATION' au niveau du serveur : http://www.mysql.com/doc/en/Charset-server.html
 
Le BLOD, c'est une mauvaise idée, très mauvaise. Ca va ralentir ton truc sans règler le problème...
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

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