Мы разрабатываем базу данных, в которой мне нужно рассмотреть некоторые ограничения FK (внешний ключ) . Но это не ограничивается формальным структурированием и нормализацией . Мы идем на это только в том случае, если он предоставляет любые преимущества производительности или масштабируемости .Преимущества ограничения внешнего ключа SQL Server
Я собираюсь через интересные статьи и поиск по Google для получения практических преимуществ. Вот некоторые ссылки:
http://www.mssqltips.com/tip.asp?tip=1296
Я хотел бы знать больше о преимуществах FK (кроме формальной структуризации и знаменитый каскадно удалить \ обновление).
FK по умолчанию не индексируется, так что же соображения при индексировании FK?
Как обращаться с полями с нулевым значением, которые отображаются как внешний ключ - это разрешено?
Помимо индексации, помогает ли это в оптимизации планов выполнения запросов в SQL-Server?
Я знаю, что есть больше, но я бы предпочел, чтобы эксперты говорили об этом. Пожалуйста, направляйте меня.
Я обрабатывал несколько баз данных с несколькими миллионами записей. Много идет об импорте данных между базой данных и ее клоном, а затем использует этот клон в среде веб-приложений. Ну, я знал, что поддерживать индексы PK автоматически и, таким образом, помогает ускорить доступ к данным. Теперь из этого обсуждения я получаю, что если я использую JOINs в своих SQL-Queries, тогда я использую FK и индексирую его, чтобы сделать операции JOIN эффективными. –
Например, у меня есть таблица OrgMaster (содержит все записи Org), тогда у меня есть таблица BookingMaster (содержит все записи бронирования). Теперь OrgMaster.Id ссылается на «BookingMaster.OrgId». Итак, у меня есть FK для отношений OrgId-to-Id, и я shud 'index' его для лучшей производительности любой операции JOIN между обеими этими таблицами. Я правильно понял?
Все вышеперечисленное - за счет дополнительных накладных расходов пространства и времени (при вставке записи в таблицу с помощью FK). –
Я бы попросил, чтобы вы предоставили мне список вопросов, которые нужно учитывать, например: - Является ли индекс FK слишком много пространства, так как таблица растет на несколько миллионов записей? - В этом случае стоит ли искать FK-индекс «каждый раз»? - В каком случае изгоняюсь я НЕ применять FK или индекс его или делать ни один из него (конечно, я могу справиться с ЛА из приложения) - Любой другие хитрые ускоривой JOIN или другие такие трудоемкие поиски? –