我试图了解有关SQL Server 2016中引入的“外键引用检查”查询计划运算符的更多信息。那里没有很多有关它的信息。微软在这里宣布了它,我在这里发表了博客。通过从具有254个或更多传入外键引用的父表中删除一行,可以看到new运算符:dbfiddle link。
操作员详细信息中显示三种不同的计数:
- 外键引用计数是传入外键的数量。
- 没有匹配的索引计数是没有合适索引的传入外键的数量。验证更新或删除的表不会违反该约束将需要对子表进行扫描。
- 我不知道部分匹配索引计数代表什么。
在这种情况下,什么是部分匹配索引?我无法进行以下任何工作:
- 筛选索引
- 将外键列作为
INCLUDE
索引的列 - 使用外键列作为第二个键列的索引
- 多列外键的单列索引
- 创建多个覆盖索引以为多列外键启用“索引连接”计划
Dan Guzman指出,即使索引键的顺序与外键列的顺序不同,多个列的外键也可以匹配索引。他的代码是在这里,以防有人能够以它为起点来进一步了解部分匹配索引。