MySQL индексирует столбцы внешнего ключа автоматически?

241
задан Micha Wiedenmann 8 April 2013 в 20:07
поделиться

4 ответа

Да, но только на . Innodb в настоящее время является единственным поставленным форматом таблицы, которому реализовали внешние ключи.

209
ответ дан Nae 23 November 2019 в 03:16
поделиться
21
ответ дан azurkin 23 November 2019 в 03:16
поделиться

Очевидно, индекс создается автоматически, как указано в ссылка, которую Роберт опубликовал .

InnoDB требует индексов по внешним ключам и ссылочным ключам, чтобы проверки внешнего ключа могли быть быстро и не требует сканирования таблицы. В ссылающейся таблице должен быть индекс, в котором столбцы внешнего ключа перечислены как первые столбцы в том же порядке. Такой индекс создается для ссылающейся таблицы автоматически, если она не существует. (В этом отличие от некоторых более старых версий, в которых индексы нужно было создавать явно, иначе создание ограничений внешнего ключа не удалось бы.) Index_name, если оно задано, используется, как описано ранее.

InnoDB и ограничения FOREIGN KEY

]
121
ответ дан 23 November 2019 в 03:16
поделиться

Как указано, для InnoDB. Сначала мне показалось странным, что многие другие (в частности, MS SQL и DB2) этого не делают.Сканирование TableSpace лучше сканирования индекса только при очень небольшом количестве строк таблицы, поэтому в подавляющем большинстве случаев внешний ключ может быть проиндексирован. Тогда меня это как-то поразило - это не обязательно означает, что это должен быть автономный (один столбец) индекс - там, где он находится в автоматическом индексе FK MySQL. Так что, возможно, именно по этой причине MS SQL, DB2 (я не уверен в Oracle) и т. Д. Оставляют это на усмотрение администратора баз данных; в конце концов, несколько индексов в больших таблицах могут вызвать проблемы с производительностью и пространством.

4
ответ дан 23 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: