2012-02-28 4 views
3

J'ai une table avec clé primaire combiné (X, Y, Z) et quand je ne montre créer la table, il neMySQL show create table montre l'entrée supplémentaire avec KEY

`X` int(10) unsigned NOT NULL, 
`Y` int(10) unsigned NOT NULL, 
`Z` int(11) NOT NULL, 
`C` bigint(20) NOT NULL, 
PRIMARY KEY (`X`,`Y`,`Z`), 
KEY `Y` (`Y`), 
KEY `Z` (`Z`), 
CONSTRAINT `T_ibfk_1` FOREIGN KEY (`X`) REFERENCES `X_T` (`X`), 
CONSTRAINT `T_ibfk_2` FOREIGN KEY (`Y`) REFERENCES `Y_T` (`ID`), 
CONSTRAINT `T_ibfk_3` FOREIGN KEY (`Z`) REFERENCES `Z_T` (`Z`) 

Pourquoi avons-nous KEY 'Y' ('Y') et KEY 'Z' ('Z') ? Est-ce que cela suggère quelque chose?

Répondre

1

Si la table est une table MySQL Innodb, vous devez savoir qu'InnoDB crée un index pour chaque contrainte de clé étrangère, qui ne peut pas être supprimée. D'où les deux indices Y et Z, puisque X est pris en compte dans la clé primaire

1

C'est le nom de l'index et les champs qu'il indexe. Vous pouvez nommer les index pour qu'ils soient plus descriptifs.

KEY `index name` (`fields`) 
0

Cela signifie que deux autres index ont été ajoutés en plus de la clé primaire. On dirait que les clés ont été créées dans phpMyAdmin car il utilise par défaut le nom de la colonne comme nom de clé lorsqu'un index est ajouté à un seul champ.

Questions connexes