liteqz.com
MySQL crée automatiquement un index avec le nom foreign_key_name. CONSTRAINT constraint_name FOREIGN KEY foreign_key_name (columns) REFERENCES parent_table(columns) ON DELETE action ON UPDATE action Oui, mais seulement sur Innodb. Innodb est le seul format de table actuellement livré avec des clés étrangères implémentées Pour ceux qui recherchent des citations de 5. 7 docs: MySQL requiert des index sur les clés étrangères et les clés référencées afin que les vérifications de clés étrangères puissent être rapides et ne nécessitent pas d'analyse de table. Cet index peut être supprimé plus tard, si vous créez un autre index qui peut être utilisé pour appliquer la contrainte de clé étrangère. nom_index, s'il est donné, est utilisé comme décrit précédemment. Un index est manquant sur la cologne.com. Vous n'obtenez pas l'index automatiquement si vous faites un ALTER TABLE (au lieu de CREATE TABLE), au moins d'après les docs (le lien est pour 5. 1 mais c'est pareil pour 5. 5): [... ] Lorsque vous ajoutez une contrainte de clé étrangère à une table à l'aide de ALTER TABLE, n'oubliez pas de créer les index requis en premier.
3 (Build 9600:) (Hyperviseur) Pour nettoyer et simplifier un peu votre question: L'index que vous avez déjà est le [LOGID], [RECEIVE_TIME] SQL Server demande un index sur APT_ID et souhaite que vous incluiez LOGID, RECEIVE_TIME C'est en effet un index différent de celui que vous avez déjà. Prenons le vieil exemple de l'annuaire téléphonique. Les pages blanches de l'annuaire téléphonique étaient sur LAST_NAME, FIRST_NAME, MIDDLE_NAME. C'est génial si vous exécutez une requête comme celle-ci: SELECT * FROM PHONE_BOOK WHERE LAST_NAME = 'OZAR' Mais si vous ne connaissez pas le nom de famille de quelqu'un et que vous demandez ceci: SELECT * FROM PHONE_BOOK WHERE FIRST_NAME = 'BRENT' Ensuite, vous allez scanner tout l'annuaire téléphonique à ma recherche. La première colonne de l'index est extrêmement importante. C'est pourquoi SQL Server demande un index sur APT_ID, ainsi que d'autres colonnes incluses. Vous pourriez donc vous demander: "Pourquoi un index existant sur APT_ID seul n'est-il pas suffisant? KB2938463-FIX : il n’y a pas de recommandations d’index manquantes affichées lorsque l’index est incorrect pour la requête dans SQL Server 2014. "
Soulignons juste trois points: Le type All indique que MySQL effectue un balayage de la table. La Possible_key est l'index que MySQL juge utilisable. key est l'index qu'il utilise effectivement. La colonne Extra indique clairement l'utilisation de l'index, ainsi que l'optimisation du Where. Sources: Documentation MySQL - Livre MySQL5 Le guide complet, Antoine Dinimant