向表中添加外键是否会影响其插入时间?

时间:2019-03-01 12:41:55

标签: sql sql-server database-design sql-server-2014

假设向表中添加的每个外键还添加了CHECK约束,以确保插入到外键列中的值来自表的值集中,其中该键是主键

这意味着具有更多外键的表将需要更长的时间才能插入值。这是正确的吗?

我正在使用Microsoft SQL Server 2014。

2 个答案:

答案 0 :(得分:2)

是的。在表中插入或修改数据时,将检查外键关系。

外键必须是主键或唯一键。这保证了索引可用于检查。

通常,在索引中查找值应该非常快。比插入中发生的其他事情更快,例如,为数据找到一个空闲页面并记录数据。

但是,验证外键会增加一些开销。

答案 1 :(得分:1)

不要混淆外键和检查-有两种不同的约束类型。例如,check不接受空值和外键(例外:在delete set null fk选项上)。

在数据库中插入/更新行时,将执行步骤ee,例如检查表,列,非常特权的存在。您拥有fk数据库引擎的地方必须在向表中插入/更新数据之前验证约束-这是执行的附加步骤。

当fk极大地减慢了数据库操作的持续时间时,我从未遇到过这种情况。