Полагаю, вы говорите о внешних ключах. Это также известно как ссылочная целостность и является одним из типов ограничение . Внешние ключи не единственные виды ограничений - вы также можете иметь уникальные и проверять ограничения. В любом случае, ссылочная целостность немного медленнее для insert
с и совсем не быстрее для select
с.
Причина в том, что он должен проверить insert
ed значения, чтобы убедиться, что они существуют в другой таблице.
Если вы хотите повысить производительность запросов select
, вы хотите поместить индексы в столбцы, к которым вы будете присоединяться, и фильтровать их. Однако индексы стоят дорого, так как они замедляют insert
с, update
с и delete
с, потому что индексы должны обновляться каждый раз, когда таблица изменяется таким образом.
Итак, если у вас большой стол insert
/ update
, не добавляйте слишком много индексов. Если ваша таблица преимущественно select
, используйте индексы там, где это возможно. Помощник по настройке ядра СУБД также может помочь вам определить эти индексы для некоторых наиболее распространенных запросов.
Убедитесь, что вы используете План выполнения запросов при выполнении запросов ( Ctrl + L в SSMS), чтобы вы могли видеть, что делает SQL Server. Вам нужно как можно больше seek
с, так как это означает, что он может использовать индекс наиболее эффективно!