[MYSQL] index non utilisés
Bonjour à tous,
Voilà j'ai un gros problème.
J'ai une requête qui fonctionne bien, qui est la suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
SELECT msg.UNB, cmd.BGM, cmd.NBLIGNES, cmd.DATE_RECEPTION_DOC, cmd.HEURE_RECEPTION_DOC, cmd.CODE_STATUT_1, cmd.CODE_STATUT_2, cmd.TYPE_MESSAGE, part.DESCRIPTION
FROM message_in msg, commande_in cmd, compte com, partenaire part
WHERE cmd.BGM LIKE '%1252%'
AND cmd.BGM != ''
AND cmd.NADDP = com.NADDP
AND com.PAYS = 'NL'
AND com.CODE_SUPPLIER
IN (
'M'
)
AND msg.ID_MESSAGE = cmd.ID_MESSAGE
AND msg.UNB = part.UNB |
un EXPLAIN de cette requête me ressort:
Code:
1 2 3 4 5 6 7 8 9 10
|
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE com ref CODE_SUPPLIER,PAYS,NADDP PAYS 2 const 474 Using where
1 SIMPLE cmd ref ID_MESSAGE,BGM,NADDP NADDP 31 euredi.com.NADDP 31 Using where
1 SIMPLE msg eq_ref PRIMARY,UNB PRIMARY 4 euredi.cmd.ID_MESSAGE 1
1 SIMPLE part ref UNB UNB 35 euredi.msg.UNB 1 Using where |
Soit 14694 "possibilités" (je ne sais pas trop quel terme utilisé).
Mais lorsque je modifie cette requête et lui ajoute une clause, comme suit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
SELECT msg.UNB, cmd.BGM, cmd.NBLIGNES, cmd.DATE_RECEPTION_DOC, cmd.HEURE_RECEPTION_DOC, cmd.CODE_STATUT_1, cmd.CODE_STATUT_2, cmd.TYPE_MESSAGE, part.DESCRIPTION
FROM message_in msg, commande_in cmd, compte com, partenaire part
WHERE cmd.BGM LIKE '%1252%'
AND cmd.BGM != ''
AND (
cmd.NADDP = com.NADDP
OR com.NADDP = cmd.NADBY
)
AND com.PAYS = 'NL'
AND com.CODE_SUPPLIER
IN (
'M'
)
AND msg.ID_MESSAGE = cmd.ID_MESSAGE
AND msg.UNB = part.UNB |
Alors là rien ne va plus !!!! 8O :? :cry: :cry:
Le explain me ressort:
Code:
1 2 3 4 5 6 7 8 9 10
|
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE cmd ALL ID_MESSAGE,BGM,NADDP,NADBY NULL NULL NULL 19157 Using where
1 SIMPLE msg eq_ref PRIMARY,UNB PRIMARY 4 euredi.cmd.ID_MESSAGE 1
1 SIMPLE part ref UNB UNB 35 euredi.msg.UNB 1 Using where
1 SIMPLE com ref CODE_SUPPLIER,PAYS,NADDP PAYS 2 const 474 Using where |
Soit 9080418 "possibilités" !!!! :oops:
j'ai pourtant un index sur NADBY dans commande_in.
Alors pourquoi ?? Qu'est ce qui ne va pas ?? :oops: :cry:
Merci beaucoup pour vos réponses !!