我有一个表Document
,它通过外键被大量其他表引用。我正在尝试删除文档记录,并根据我的执行计划,SQL Server正在对每个引用表执行聚簇索引扫描。这非常痛苦。
我以为让FK自动在FK字段上做了一个索引?还是我错了?我是否真的必须绕过我的数据库,在每个FK字段上放置一个显式索引?
答案 0 :(得分:4)
不,SQL Server在创建外键时不会自动创建索引。您必须自己创建索引。
答案 1 :(得分:1)
名称“外键”有点误导,因为它通常与“主键”相关联,后者会自动编入索引。因此,人们可能会认为外键也被编入索引。
交易是这里的“关键”是指约束。因此,添加外键实际上会添加一个约束。索引是完全不同的交易。