Ограничительные преимущества Внешнего ключа SQL Server

Лучший ответ зависит от платформы. Для развертывания в Windows у меня были хорошие результаты с помощью комбинации одна банка и launch4j. Это действительно брало некоторое время для установки моей среды сборки правильно (скрипты Ant, главным образом), но теперь это является довольно безболезненным.

7
задан Hemant Tank 1 May 2012 в 14:29
поделиться

4 ответа

  • Foreign keys provide no performance or scalability benefits.
  • Foreign keys enforce referential integrity. This can provide a practical benefit by raising an error if someone attempted to delete rows from the parent table in error.
  • Foreign keys are not indexed by default. You should index your foreign keys columns, as this avoids a table scan on the child table when you delete/update your parent row.
  • You can make a foreign key column nullable and insert null.
9
ответ дан 6 December 2019 в 07:51
поделиться

Ограничения FK обеспечивают согласованность ваших данных. Вот и все. Это главное преимущество. Ограничения FK не принесут вам никакого прироста производительности.

Но, если вы специально не денормализовали структуру db, я бы рекомендовал вам использовать ограничения FK. Основная причина - постоянство.

4
ответ дан 6 December 2019 в 07:51
поделиться

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

. У них нет никаких «функциональных» преимуществ, они ничего не оптимизируют. Вам все равно придется самостоятельно создавать индексы и т. Д. И да, вы можете иметь значения NULL в столбце, который является внешним ключом.

6
ответ дан 6 December 2019 в 07:51
поделиться

As mentioned, they are for data integrity. Any performance "loss" would be utterly wiped out by the time required to fix broken data.

However, there could be an indirect performance benefit.

For SQL Server at least, the columns in the FK must have the same datatype on each side. Without an FK, you could have an nvarchar parent and a varchar child for example. When you join the 2 tables, you'll get a datatype conversions which can kill performance.

Example: different varchar lengths causing an issue

1
ответ дан 6 December 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: