Оптимизация удаления для таблицы, на которую ссылается множество внешних ключей - PullRequest
5 голосов
/ 22 февраля 2010

У меня есть таблица Document, на которую ссылается множество других таблиц через внешние ключи. Я пытаюсь удалить запись документа, и в соответствии с моим планом выполнения SQL Server выполняет сканирование кластерного индекса по каждой из ссылочных таблиц. Это очень больно.

Я думал, что FK автоматически сделал индекс для полей FK? Или я не прав? Действительно ли мне нужно обходить свою базу данных, помещая явный индекс в каждое поле FK?

Ответы [ 2 ]

4 голосов
/ 22 февраля 2010

Нет, SQL Server не создает индекс автоматически при создании внешнего ключа. Вы должны создать индексы самостоятельно.

Похожие записи: Создает ли внешний ключ автоматически индекс?

1 голос
/ 22 февраля 2010

Название «Внешний ключ» немного вводит в заблуждение, поскольку обычно оно связано с «первичным ключом», который индексируется автоматически. Таким образом, люди могут предположить, что внешний ключ тоже проиндексирован.

Дело в том, что «ключ» здесь относится к ограничению. Таким образом, добавляя внешний ключ, вы фактически добавляете ограничение. Индекс - это совсем другое дело.

...