У меня есть таблица Document
на это ссылается тонна других таблиц через внешние ключи. Я пытаюсь удалить Запись документа, и согласно моему плану выполнения, SQL Server делает сканирование кластерного индекса на каждых из таблиц ссылки. Это очень болезненно.
Я думал, имея FK, автоматически сделал индекс на полях FK? Или я неправильно? Я должен действительно обойти свою базу данных, поместив явный индекс на каждое поле FK?
Нет, SQL Server не создает индекс автоматически при создании внешнего ключа. Вы должны сами создать индексы.
Сообщение по теме: Создает ли внешний ключ автоматически индекс?
Название «Внешний ключ» немного вводит в заблуждение, поскольку обычно связано с «первичным ключом», который индексируется автоматически. Итак, люди могут предположить, что внешний ключ тоже проиндексирован.
Дело в том, что «ключ» здесь означает ограничение. Таким образом, добавляя внешний ключ, вы фактически добавляете ограничение. Индекс - совсем другое дело.