MySQL show create table показывает дополнительную запись с KEY - PullRequest
3 голосов
/ 28 февраля 2012

У меня есть таблица с комбинированным первичным ключом (X, Y, Z), и когда я показываю таблицу создания, она делает

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

Почему мы получаем KEY 'Y' ('Y') и KEY 'Z' ('Z')?Это что-то подсказывает?

Ответы [ 3 ]

1 голос
/ 28 февраля 2012

Если таблица является таблицей MySQL Innodb, то вы должны знать, что InnoDB создает индекс для каждого ограничения внешнего ключа, который нельзя удалить. Отсюда два индекса Y и Z, поскольку X учитывается в первичном ключе

1 голос
/ 28 февраля 2012

Это имя индекса и поля, которые он индексирует. Вы можете назвать индексы, чтобы они были более наглядными.

KEY `index name` (`fields`)
0 голосов
/ 28 февраля 2012

Это означает, что в дополнение к первичному ключу были добавлены два других индекса. Похоже, что ключи были созданы в phpMyAdmin, поскольку по умолчанию используется имя столбца в качестве имени ключа при добавлении индекса к одному полю.

...