Я понимаю, что это старый вопрос, но я хочу прокомментировать, насколько плоха практика создания FK, который не применяется к существующим данным. Если на самом деле существует потребность во внешнем ключе, вам нужно исправить все неверные данные перед добавлением внешнего ключа (который должен был быть добавлен во время разработки), не пытайтесь игнорировать его. Все, что вы делаете, это маскируете свою очень серьезную проблему целостности данных, отказываясь замечать ее и что-то с этим делать. Иногда возникает необходимость сделать это из-за изменившихся требований, но это не следует рассматривать в качестве первого выбора методов при добавлении внешнего ключа в таблицу, содержащую данные. Поиск и исправление неверных данных должно быть.
Данные, не имеющие отношения к ПК, бесполезны. Если бы у меня была таблица заказов с идентификатором клиента, которого больше нет в таблице клиентов, как бы я узнал, кто заказал продукт? Конечно, именно поэтому FK должны были применяться с самого начала, независимо от того, сделали ли вы миллион вставок строк или нет. Я ежедневно выполняю многомиллионные вставки строк через SSIS во многие таблицы, которые имеют внешние ключи, поэтому использование этого в качестве причины для того, чтобы не настраивать их в первую очередь, указывает на отсутствие понимания структуры базы данных. Нарушение целостности ваших данных для скорости ВСЕГДА плохая идея. Без целостности данных ваша база данных ненадежна и поэтому бесполезна.