Индекс по внешнему ключу или нет в SQL Server 2008 - PullRequest
6 голосов
/ 11 июля 2011

Есть ли необходимость добавить индекс к внешнему ключу в SQL Server 2008 или это обрабатывается по умолчанию.Во многих моих таблицах у меня есть один FK, который указывает на таблицу учетных записей пользователей, и большинство выборов делается с этим WHERE Account_FK = id.Надеюсь, индекс может быть быстрым выигрышем в производительности.

Ответы [ 2 ]

4 голосов
/ 11 июля 2011

Как правило, вы хотите, чтобы все ваши ключи JOIN имели индексы, поэтому да, добавьте индекс.

Если это составной ключ, убедитесь, что все соответствующие поля включены в индексный ключ.список в соответствующем порядке.

Насколько мне известно, единственный раз, когда индекс автоматически создается в SQL Server, это когда вы добавляете первичный ключ в кучу (неиндексированная таблица) - PK назначается как кластеризованный.Индекс Ключ автоматически;или, как указывает Дэмиен ниже, когда вы добавляете ограничение UNIQUE к полю или набору полей.

3 голосов
/ 11 июля 2011

Одна не столь очевидная причина для добавления индекса в FK - это когда вы хотите удалить строку в основной таблице (вашей таблице учетных записей пользователей).SQL Server выполняет проверку для каждого отношения FK, чтобы определить, есть ли строки, которые могут помешать удалению, и эта проверка выполняется намного быстрее с индексом столбца FK в дочерних таблицах.

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