Зачем использовать ограничения внешнего ключа в MySQL?
Мне было интересно,
Какова будет моя мотивация использовать ограничение как внешний ключ в MySQL, так как я уверен, что могу управлять добавляемыми типами?
Повышает ли производительность?
Ответ 1
Внешние ключи обеспечивают ссылочную целостность. Эти ограничения гарантируют, что строка в таблице order_details с полем order_id, ссылающаяся на таблицу orders, никогда не будет иметь значение order_id, которое не существует в таблице orders.
Для внешних ключей не требуется работающая реляционная база данных (фактически MySQL по умолчанию хранилище движок не поддерживает FK), но они безусловно, необходимы, чтобы избежать нарушенных отношений и сиротских строк (то есть ссылочной целостности). Для обеспечения доступности ссылочной целостности на уровне базы данных требуется C в ACID.
Что касается ваших проблем, связанных с производительностью, то, как правило, существует стоимость исполнения, но, вероятно, будет незначительной. Я предлагаю использовать все ограничения внешнего ключа и экспериментировать без них, если у вас есть реальные проблемы с производительностью, которые вы не можете решить иначе.