MySQL show create table显示带键的额外条目

MySQL show create table显示带键的额外条目,mysql,mysql-management,Mysql,Mysql Management,我有一个带有组合主键(X、Y、Z)的表,当我显示CREATETABLE时,它会这样做 `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`) R

我有一个带有组合主键(X、Y、Z)的表,当我显示CREATETABLE时,它会这样做

`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`)

为什么我们得到
键'Y'('Y')
键'Z'('Z')
?这意味着什么吗?

这是索引及其索引字段的名称。您可以命名索引,使其更具描述性

KEY `index name` (`fields`)

这意味着除了主键之外,还添加了两个其他索引。看起来键是在phpMyAdmin中创建的,因为在将索引添加到单个字段时,它默认使用列名作为键名。

如果该表是MySQL Innodb表,那么您应该知道Innodb会为每个外键约束创建一个索引,该约束无法删除。因此有两个索引Y和Z,因为X在主键中是适合的