J'ai une table à partir d'un système hérité qui n'a pas de clé primaire. Il enregistre des données transactionnelles pour émettre des matériaux dans une usine.
Pour les simplicités Sake, disons que chaque ligne contient Job_Number, Part_number, Quantity & Date_Surée. P>
J'ai ajouté un index à la colonne Date délivrée. Lorsque j'explique une touche expliquée * à partir de délivré_parts où date_isturée> '20100101', cela montre ceci: p> donc il voit la clé, mais cela ne l'utilise pas?
Quelqu'un peut-il expliquer pourquoi? P> p>
3 Réponses :
Quelque chose me dit que l'optimiseur de requête MySQL a décidé correctement.
Voici comment vous pouvez dire. Exécutez ceci: p>
nombre de lignes p> nombre de lignes correspondant à votre requête p> si Le nombre de lignes que vous récupérez réellement dépasse 5% du nombre total de la table, l'optimiseur de requêtes MySQL décide qu'il serait moins effort de faire une analyse de la table complète. P> MAINTENANT, si votre requête était plus exacte, Par exemple, avec ceci: p> alors, vous obtiendrez un autre plan d'explication différent. p> p>
Votre réponse est techniquement correcte, mais «L'optimiseur de requêtes MySQL a décidé correctement» n'est pas. Je suis plus ou moins dans la même situation, et dans mon cas en utilisant la clé (la forçant) rend la requête beaucoup plus rapide.
J'envie 1500 records sur 200k. Toujours pas de clé disponible utilisé.
Moi aussi ... 15 080 sur 709,743
@Kellogs, @serge, essayez d'utiliser Force Key < / Code>
, ça marche pour vous?
possible_keys code> noms des noms avec les colonnes correspondantes dans, mais cela ne signifie pas que chaque clé de cette clé va être utile pour la requête. Dans ce cas, aucun n'est. P>
Il existe plusieurs types d'index (indices?). Un indice de hachage est un moyen rapide de rechercher un élément donné d'une valeur spécifique. Si vous avez un tas de valeurs discrètes que vous interrogez, (par exemple, une liste de 10 dates), vous pouvez calculer un hachage pour chacune de ces valeurs et les rechercher dans l'index. Depuis que vous ne recherchez pas une valeur spécifique, mais plutôt une comparaison, un indice de hachage ne vous aidera pas. P>
D'autre part, un index B-Tree peut vous aider car il donne une commande aux éléments qu'il s'agit d'indexation. Par exemple, voir ici: http://dev.mysql.com /doc/refman/5.0/fr/mysql-indexes.html pour MySQL (recherche des caractéristiques de l'index des arbres B). Vous voudrez peut-être vérifier que votre table utilise un index B-Tree pour sa colonne d'index. P>
Nommer une colonne
clé code> ne le fait pas. Bien que je ne comprends pas complètement la question, attribuez la colonne code> clé code> comme clé primaire si vous souhaitez ce type de fonctionnalité. Sinon, vous aurez besoin de fournir plus d'informations (telles que le schéma actuel par exemple).