Почему индекс был автоматически создан для полей внешнего ключа? - PullRequest
1 голос
/ 28 июля 2011

Я создаю внешний ключ для одного поля в моей таблице, индекс был автоматически создан для этого поля. почему индекс был автоматически создан для полей внешнего ключа?

Ответы [ 2 ]

1 голос
/ 17 декабря 2011

Индексы создаются на внешних ключах для повышения производительности.Если у вас есть внешний ключ, который часто используется для получения связанных элементов, индекс позволяет быстро получить эти элементы.Кроме того, условия, налагаемые на внешние ключи (удаление, обновление), используют индекс для быстрой работы.Наконец, вам нужно выполнить проверки целостности при создании внешних ключей, это требует выполнения поиска, эти поиски используют индексы.

0 голосов
/ 28 июля 2011

Поля внешнего ключа ссылаются на содержимое полей в других таблицах.

Если мы создадим таблицу примерно так:

Table Patient
  id 
  name
  address

И стол Болезнь

Table Illness
  id
  patient_id foreign key to patient.id
  description

MySQL проверяет, действительно ли внешняя ссылка на таблицу patient совпадает с идентификатором в Illness. Он также выполняет обратное действие, если patient удален, он проверяет, не ссылается ли он на illness. Для того, чтобы сделать это эффективно, ему нужно проиндексировать эти поля, в противном случае ему придется потратить слишком много времени на полный поиск в таблице.

Кроме того, слово key является синонимом index, поэтому имеет смысл индексировать ключи: -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...