假设向表中添加的每个外键还添加了CHECK
约束,以确保插入到外键列中的值来自表的值集中,其中该键是主键
这意味着具有更多外键的表将需要更长的时间才能插入值。这是正确的吗?
我正在使用Microsoft SQL Server 2014。
答案 0 :(得分:2)
是的。在表中插入或修改数据时,将检查外键关系。
外键必须是主键或唯一键。这保证了索引可用于检查。
通常,在索引中查找值应该非常快。比插入中发生的其他事情更快,例如,为数据找到一个空闲页面并记录数据。
但是,验证外键会增加一些开销。
答案 1 :(得分:1)
不要混淆外键和检查-有两种不同的约束类型。例如,check不接受空值和外键(例外:在delete set null fk选项上)。
在数据库中插入/更新行时,将执行步骤ee,例如检查表,列,非常特权的存在。您拥有fk数据库引擎的地方必须在向表中插入/更新数据之前验证约束-这是执行的附加步骤。
当fk极大地减慢了数据库操作的持续时间时,我从未遇到过这种情况。