【发布时间】:2016-11-02 03:09:27
【问题描述】:
我有一张大表需要重建索引。该表配置了聚集列存储索引 (CCI),我们意识到我们需要根据特定用例对数据进行排序。
用户执行日期范围和相等查询,但由于数据未按照他们想要的方式排序,因此查询不是最佳的。 SQL 咨询团队建议将数据组织在正确的行组中,以便查询可以从行组消除中受益。
表格说明:
- 按时间戳 1 分区,每月 PF
- 总行数:310 亿
- 预计行大小:60 字节
- 估计表大小:600 GB
表定义:
CREATE TABLE [dbo].[Table1](
[PkId] [int] NOT NULL,
[FKId1] [smallint] NOT NULL,
[FKId2] [int] NOT NULL,
[FKId3] [int] NOT NULL,
[FKId4] [int] NOT NULL,
[Timestamp1] [datetime2](0) NOT NULL,
[Measurement1] [real] NULL,
[Measurement2] [real] NULL,
[Measurement3] [real] NULL,
[Measurement4] [real] NULL,
[Measurement5] [real] NULL,
[Timestamp2] [datetime2](3) NULL,
[TimeZoneOffset] [tinyint] NULL
)
CREATE CLUSTERED COLUMNSTORE INDEX [Table1_ColumnStoreIndex] ON [dbo].[Table1] WITH (DROP_EXISTING = OFF)
GO
环境:
- SQL Server 2014 企业版。
- 8 核,32 GB RAM
- VMWare 高 性能平台
我的策略是:
- 删除现有的 CCI
- 使用右列创建普通聚集行索引,这将对数据进行排序
- 使用 DROP EXISTING = OFF 重新创建 CCI。这会将现有的 CRI 转换为 CCI。
我的问题是:
- 重建索引或仅重新加载数据有意义吗?重新加载可能需要一个月才能完成,而重建索引也可能需要很长时间,也许......
- 如果我删除现有的 CCI,表会扩展,因为它可能不再被压缩?
【问题讨论】: