1.
Donc j'ai ma table :
CREATE TABLE chose (
chose1 TINYINT(3) NOT NULL auto_increment,
chose2 CHAR(12) NOT NULL,
chose3 MEDIUMINT(5) NOT NULL,
UNIQUE (chose1),
INDEX (chose2(12))
);
Déjà est-ce que l'ordre des index c'est bien celui dans lequel on les déclare. Par exemple ici l'index est chose1,chose2 ?
Maintenant,
si je fais un "WHERE chose1=\"3\"" MySQL utilisera l'index mais si je fais "WHERE chose2="mot"" il ne s'en servira pas. Ma question est donc de savoir comment utiliser seulement l'index numéro 2. "WHERE chose1>=\"1\" AND chose2=\"mot\"" irait mais je ne sais pas si ça va plaire à MySQL vu que en ce qui concerne chose1 c'est toute la table qui correspond à la condition et comme il y a une histoire de 30% un peu flou pour moi j'ai besoin de votre aide...
2.
En plus de ma table "chose" j'ai :
CREATE TABLE table2 (
t1 TEXT NOT NULL,
t2 TINYINT(3) NOT NULL,
INDEX (t2)
);
Vaut-il mieux faire :
- SELECT table2.t1 FROM table2, chose WHERE chose.chose1>="1" AND chose.chose2="mot" AND chose.chose1=table2.t2
ou
- SELECT chose1 FROM chose WHERE chose.chose1>="1" AND chose.chose2="mot" ... puis une seconde requête après traitement PHP :
"SELECT t1 FROM table2 WHERE t2=\"".$var_issue_traitement_php_de_chose1."\""