SQL Server语言 - 数百万行的FACT表的聚集索引关键问题



我们得到了一个FACT表,它有237383163行,其中有很多重复的数据。

当对这个表运行查询时,它对这么多行进行扫描,导致执行时间长(因为我们没有创建聚集索引)。

是否有人可以建议-使用现有字段的某些组合创建集群键以及添加任何新字段(如身份列)

在表上创建非聚集索引也没有帮助。

感想:

  • 添加非唯一的聚集索引将需要一个4字节的唯一标识符
  • 添加代理IDENTITY列将留下重复的
  • 当有非聚集索引
  • 时,聚集索引是最好的。

首先,删除重复数据

那么根据是否存在非聚类索引

,我会考虑以下两种情况之一
  1. 如果没有NC索引,在部分或所有FACT列上创建唯一的聚集索引
  2. 对于NC索引,创建一个IDENTITY列并将其用作聚集索引。在FACT列
  3. 上创建唯一的NC索引

选项1在磁盘上要小得多。我以前对10亿行以上的事实表做过这个,它缩小了65%。没有NC指标。

两个选项都需要测试,以查看对负载和响应时间等的影响

最新更新