Правду кажучи, ви не тільки не побачите великої втрати продуктивності від наявності зовнішніх ключових обмежень у базі даних, але й побачите підвищення продуктивності. Оптимізатор запитів SQL Server побудований на основі концепції первинних і невід'ємних ключів, а також інших типів обмежень даних. Якщо вони встановлені та застосовані, оптимізатор може скористатися ними, щоб покращити ефективність роботи. Ось допис у блозі з простим прикладом, який показує його в дії.
Якщо ви перебуваєте в кращому випадку, коли ви справді маєте більше вставок, ніж читає (а оновлення та видалення потребують зчитування, тому вони, як правило, додаються до кількості прочитаних), можливо, має сенс видалити обмеження з даних для продуктивності, можливо . Але оскільки переважна більшість баз даних орієнтована на читання, ви жертвуєте продуктивністю, не підвищуючи її.
І нічого з цього не згадує той факт, що цілісність даних краще обробляється в базі даних, оскільки її потрібно створити лише один раз там, ніби ви виконуєте всю роботу в коді, можливо, вам доведеться робити це кілька разів для декількох додатків (якщо ви не проектуєте ваш рівень доступу до даних обережно і вимагає, щоб кожен додаток отримував доступ до db, щоб пройти той самий рівень).
Якщо ви використовуєте реляційну систему баз даних, я кажу, чому б не реально її використовувати. Якщо вам не потрібні реляційні дані, перейдіть з Hadoop або чимось іншим.