我们有一个巨大的表,我需要在其中对单行进行更新。我不知道该行的主键,但我有一个在该表中唯一的 varchar 值。我还有该表中其他一些列的值。
运行更新需要三分钟以上,我假设它进行了全表扫描。
查看表上的索引,列上的索引的基数为零,页数为零。还有其他索引的基数等于表中的行数(几百万)和几十万页数。
这些数字到底意味着什么?
作为后续措施,添加一个限制来命中具有更高基数或页数的索引会加快执行速度吗?或者我可以在索引上查看其他内容,以找到更适合快速找到我需要更改的行的索引。
基数是表中该字段的唯一值的数量。
我怀疑 SQL Server 实际上并没有创建索引,因为没有它的记录。是否有可能这个字段是全部NULL
s,或者上面有一个过滤器,可以消除所有记录,例如WHERE 1=0
?
一个好的起点是运行更新并捕获实际的执行计划。
EDIT:
指数类型 3 是XML Index
.
请参阅此页面以供参考。
的结构XML
索引有很大不同。我自己不使用它们,但从快速阅读来看,它听起来像是创建了一系列附加索引,这些索引无法由用户直接访问,但由查询引擎使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)