Влияет ли добавление внешнего ключа в таблицу на время вставки? - PullRequest
0 голосов
/ 01 марта 2019

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

Это будет означать, что для вставки значения в таблицу с большим количеством внешних ключей потребуется больше времени.Это правильно?

Я использую Microsoft SQL Server 2014.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Не путайте внешние ключи и проверки - есть два разных типа ограничений.Например, проверка принимает нулевые значения и внешние ключи не (исключение: при удалении установить нулевую опцию fk).

Когда строки вставляются / обновляются в наборе базы данных, выполняется шаг od, например, проверка существования таблиц, столбцов, проверки подлинностипривилегии.Если у вас есть ядро ​​базы данных fk, прежде чем вставлять / обновлять данные в таблицу, необходимо проверить противопоказание - это дополнительный шаг для выполнения.

Я никогда не испытывал ситуации, когда fk мучительно замедлял продолжительность операций с базой данных.

0 голосов
/ 01 марта 2019

Да.Отношения внешнего ключа проверяются, когда данные вставляются или изменяются в таблице.

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

В общем, поиск значения в индексе должен быть довольно быстрым.Быстрее, чем все остальное, что происходит во вставке, например, поиск свободной страницы для данных и регистрация данных.

Однако проверка внешнего ключа добавит некоторые дополнительные затраты.

...