Rev*_*nzo 7 sql sql-server indexing cardinality
我们有一个庞大的表,我需要在一行上进行更新.我不知道该行的主键,但我有一个在该表中唯一的varchar值.我还拥有该表中其他一些列的值.
运行更新需要花费三分钟,我假设它正在进行全表扫描.
查看表中的索引,列上的索引的基数为零,页数为零.还有其他索引的基数等于表中的行数(几百万)和几十万的页数.
这些数字究竟意味着什么?
作为一个后续,是否会添加一个限制,以更高的基数或页数来命中索引,从而加快执行速度?或者还有什么我可以看到的指标,找到一个更适合快速找到我要改变的行.
基数是表中该字段的唯一值的数量.
我怀疑SQL Server实际上并没有创建索引,因为它没有记录.可能这个字段都是NULLs,或者它上面有一个过滤器可以消除所有记录,例如WHERE 1=0?
一个好的起点是运行更新并捕获实际的执行计划.
编辑:
索引类型3是XML Index.
XML索引的结构有点不同.我不是自己使用它们,但是通过快速阅读,它听起来像创建了一系列附加索引,这些索引不能由用户直接访问,但是由查询引擎使用.