2015-12-22 7 views
0

Мои силы для игры в Google не были достаточно сильными для этого. Это все теоретический вопрос.Размер ограничения внешнего ключа

Предположим, у меня есть огромная база данных с сотнями таблиц, и каждая таблица имеет пользовательский столбец, который ссылается на таблицу пользователей.

Теперь, если бы я изменил бы столбец пользователя, чтобы иметь ограничение внешнего ключа, будет ли увеличение размера базы данных заметным?

+0

Зависит от вашего определения «* огромный *». Но да, база данных увеличилась бы в размерах, и это было бы заметно. Но от того, чтобы быть заметным, чтобы быть проблемой, есть, возможно, большая разница. Размер, на который будет увеличиваться база данных, зависит от количества данных (количества строк), которые у вас есть в вашей базе данных и таблицах, а не от сложности базы данных (сотни таблиц). Я считаю, что вы можете видеть в SSMS размер, который занимает объект в вашей базе данных, перейдя в окно «Проводник объектов», затем на ваш объект и щелкнув правой кнопкой мыши и перейдя в «Свойства», но сначала вам нужно создать свой FK. –

+0

@RaduGheorghiu: это неправильно. Простое определение _constraint_ никак не меняет размер базы данных (за исключением нескольких строк, добавленных в системные каталоги). –

+0

@a_horse_with_no_name Урок выучил, спасибо. –

ответ

2

Если на «изменить столбец пользователя, чтобы иметь ограничение внешнего ключа» вы имеете в виду что-то вроде:

alter table some_table 
    add constraint fk_some_table_users 
    foreign key (user_id) 
    references users (id); 

Тогда ответ: нет, это никоим образом не будет изменять размер базы данных (кроме некоторых дополнительных строк в системных каталогах для хранения определения вашего ограничения).


Ограничение будет улучшена надежность данных, а в некоторых случаях даже может помочь оптимизатору удалить ненужным присоединяется или принимать другие ярлыки, основанные на ограничении информации. Однако при вставке или удалении строк возникает небольшая служебная нагрузка, потому что ограничение необходимо проверить. Но эти небольшие накладные расходы не перевешивают преимуществ, которые вы получаете от наличия согласованных данных в вашей базе данных.

Я никогда не видел заявки, которые утверждали, что имеют возможность «иметь под контролем», которые не нуждались в очистке данных после того, как они были в производстве в течение некоторого времени. Поэтому лучше оставить этот вид проверки в базе данных.

Смежные вопросы