什么是基数以及它如何影响性能(SQL Server)?

时间:2011-06-30 15:25:21

标签: sql sql-server indexing cardinality

我们有一个庞大的表格,我需要在一行上进行更新。我不知道该行的主键,但我有一个在该表中唯一的varchar值。我也有该表中其他一些列的值。

运行更新需要花费三分钟时间,我假设它正在进行全表扫描。

查看表中的索引,列上的索引的基数为零,页数为零。还有其他索引的基数等于表中的行数(几百万)和几十万的页数。

这些数字究竟意味着什么?

作为一个后续行动,是否会添加一个限制点击一个具有更高基数或页数的索引来加快执行速度?或者还有什么我可以看到的指标,找到一个更适合快速找到我要改变的行。

1 个答案:

答案 0 :(得分:6)

基数是表格中该字段的唯一值数。

我怀疑SQL Server实际上并没有创建索引,因为它没有记录。这个字段是{@ 1}}是可能的,还是有一个过滤器可以删除NULL之类的所有记录?

一个好的起点是运行更新并捕获实际的执行计划。

修改

索引类型3是WHERE 1=0

Please see this page for reference.

XML Index索引的结构有点不同。我自己不使用它们,但从快速阅读中可以看出,它创建了一系列附加索引,这些索引无法由用户直接访问,但由查询引擎使用。