Index qui n'est pas utilisé
Résolu
Erwan18
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Erwan18 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Erwan18 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un souci avec un index sur une table MySQL qui n'est pas utilisé systématiquement dans une requête.
J'ai une table nommée ENTREPOSAGE qui contient 93535 lignes et 75 champs, dont celui-ci :
J'ai créé cet index :
Quand j'exécute cette requête :
Mais quand j'exécute celle-ci :
Je ne comprends pas pourquoi :-(
Quelqu'un peut-il m'aider ? Merci !
J'ai un souci avec un index sur une table MySQL qui n'est pas utilisé systématiquement dans une requête.
J'ai une table nommée ENTREPOSAGE qui contient 93535 lignes et 75 champs, dont celui-ci :
Valide enum('N','O') NOT NULL DEFAULT 'N'
J'ai créé cet index :
Nom Type Unique Compressé Colonne Cardinalité Null
Valide BTREE Non Non Valide 1 Non
Quand j'exécute cette requête :
EXPLAIN SELECT * FROM entreposage WHERE Valide = 'O'je constate que l'index est bien utilisé :
id select_type table type possible_keys key rows extra
1 SIMPLE entreposage ref Valide Valide 69 Using index condition
Mais quand j'exécute celle-ci :
EXPLAIN SELECT * FROM entreposage WHERE Valide = 'N'l'index est ignoré :
id select_type table type possible_keys key rows Extra
1 SIMPLE entreposage ALL Valide NULL 93535 Using where
Je ne comprends pas pourquoi :-(
Quelqu'un peut-il m'aider ? Merci !
A voir également:
- Index qui n'est pas utilisé
- Qui utilise mon wifi - Guide
- Index téléphonique - Guide
- Salut j'utilise whatsapp - Accueil - Messagerie instantanée
- Telecharger index - Télécharger - Gestion de fichiers
- Comment savoir quelle version de windows j'utilise - Guide
1 réponse
J'ai trouvé la réponse dans la doc MySQL :
Notez que dans certains cas, MySQL ne va pas utiliser un index, même s'il y en a un disponible. Si l'utilisation de l'index requiert que MySQL accède à plus de 30% des lignes de la table (dans ce cas, un scan de table est probablement plus rapide, et demandera moins d'accès disques). Notez que si une telle requête utilise la clause LIMIT pour ne lire qu'une partie des lignes, MySQL utilisera tout de même l'index, car il va trouver plus rapidement les quelques lignes de résultat.
Notez que dans certains cas, MySQL ne va pas utiliser un index, même s'il y en a un disponible. Si l'utilisation de l'index requiert que MySQL accède à plus de 30% des lignes de la table (dans ce cas, un scan de table est probablement plus rapide, et demandera moins d'accès disques). Notez que si une telle requête utilise la clause LIMIT pour ne lire qu'une partie des lignes, MySQL utilisera tout de même l'index, car il va trouver plus rapidement les quelques lignes de résultat.