向 table 添加外键会影响其插入时间吗?
Does adding a foreign key to a table affect its insertion time?
是假设每个外键添加一个到table也会添加一个CHECK
约束,确保插入外键列的值来自table 其中该键是主键。
这意味着具有更多外键的 table 将需要更长的时间来插入值。这是正确的吗?
我正在使用 Microsoft SQL Server 2014。
是的。在 table.
中插入或修改数据时检查外键关系
外键必须是主键或唯一键。这保证了索引可用于检查。
一般来说,在索引中查找值应该是相当快的。比插入中发生的其他事情更快,例如为数据查找空闲页面和记录数据。
但是,验证外键会增加一些开销。
不要混淆外键和检查 - 有两种不同的约束类型。例如检查接受空值和外键不接受(例外:删除时设置空 fk 选项)。
当数据库中的行 inserted/updated 时,正在执行 od 步骤,例如检查 table 的存在,列,veryfing 权限。你有 fk 数据库引擎必须在 inserting/updateing 数据到 table 之前验证约束 - 这是执行的额外步骤。
我从未遇到过这种情况,当 fk 痛苦地减慢数据库操作持续时间时。
是假设每个外键添加一个到table也会添加一个CHECK
约束,确保插入外键列的值来自table 其中该键是主键。
这意味着具有更多外键的 table 将需要更长的时间来插入值。这是正确的吗?
我正在使用 Microsoft SQL Server 2014。
是的。在 table.
中插入或修改数据时检查外键关系外键必须是主键或唯一键。这保证了索引可用于检查。
一般来说,在索引中查找值应该是相当快的。比插入中发生的其他事情更快,例如为数据查找空闲页面和记录数据。
但是,验证外键会增加一些开销。
不要混淆外键和检查 - 有两种不同的约束类型。例如检查接受空值和外键不接受(例外:删除时设置空 fk 选项)。
当数据库中的行 inserted/updated 时,正在执行 od 步骤,例如检查 table 的存在,列,veryfing 权限。你有 fk 数据库引擎必须在 inserting/updateing 数据到 table 之前验证约束 - 这是执行的额外步骤。
我从未遇到过这种情况,当 fk 痛苦地减慢数据库操作持续时间时。