Нет никаких накладных расходов на индексирование с помощью FK в SQL Server, поскольку для них не создаются индексы по умолчанию.
Вы можете достичь желаемой функциональности в отношении проверки ограничений, отключив FK.
CREATE TABLE T1
(
C1 INT PRIMARY KEY
)
CREATE TABLE T2
(
C1 INT
)
/*Add FK without checking existing data*/
ALTER TABLE T2 WITH NOCHECK ADD CONSTRAINT FK_T2_C1 FOREIGN KEY(C1)
REFERENCES T1 (C1)
/*Prevent checking of future data*/
ALTER TABLE T2 NOCHECK CONSTRAINT FK_T2_C1
Помимо оптимизации целостности данных, оптимизатор также может использовать ограничения внешнего ключа для улучшенияпланы запросов ( Ссылка: точка 9 )
Вы определили, что FK вызывает конкретную проблему производительности в вашем случае?