web-dev-qa-db-fra.com

Comment indiquer l'index à utiliser dans une requête de sélection MySQL?

J'ai une requête MySQL (sous MySQL 5.0.88), que j'essaie d'accélérer. La table sous-jacente a plusieurs index et pour la requête en question, le mauvais index est utilisé (i_active - 16 000 lignes, par rapport à i_iln - 7 lignes).

Je ne suis pas très familiarisé avec MySQL, mais il existe un indice use index qui peut forcer MySQL à utiliser un certain index. J'essaye comme ça:

 SELECT art.firma USE INDEX (i_iln)
 ...

mais cela produit une erreur MySQL.

Question :
Quelqu'un peut-il me dire ce que je fais mal? (Sauf en cours d'exécution 5.0.88, que je ne peux pas changer.)

30
frequent
select * from table use index (idx);

http://dev.mysql.com/doc/refman/5.0/fr/index-hints.html

5
Markus Mikkolainen

parfois, avec use index (nom_index), l’optimiseur peut passer à l’analyse de table. Si vous utilisez hint force index, l’optimiseur sera forcé d’utiliser index. les lignes avec index fourni.

SELECT art.firma FROM art FORCE INDEX (i_iln);

pour plus de détails sur les astuces USE INDEX et FORCE INDEX, cochez lien

0
MikA