小编Ted*_*een的帖子

如何优化SQL Server列存储对齐方式

我的IOT指标(时间序列数据)有一个Clustered Columnstore Index Table.它包含超过10亿行,结构如下:

CREATE TABLE [dbo].[Data](
[DeviceId] [bigint] NOT NULL,
[MetricId] [smallint] NOT NULL,
[TimeStamp] [datetime2](2) NOT NULL,
[Value] [real] NOT NULL
)

CREATE CLUSTERED INDEX [PK_Data] ON [dbo].[Data] ([TimeStamp],[DeviceId],[MetricId]) --WITH (DROP_EXISTING = ON)
CREATE CLUSTERED COLUMNSTORE INDEX [PK_Data] ON [dbo].[Data] WITH (DROP_EXISTING = ON, MAXDOP = 1, DATA_COMPRESSION = COLUMNSTORE_ARCHIVE)
Run Code Online (Sandbox Code Playgroud)

从2008年到现在,有大约10,000个不同的DeviceId值和TimeStamps.针对此表的典型查询如下所示:

SET STATISTICS TIME, IO ON
SELECT
    [DeviceId]
    ,[MetricId]
    ,DATEADD(hh, DATEDIFF(day, '2005-01-01', [TimeStamp]), '2005-01-01') As [Date]
    ,MIN([Value]) as [Min]
    ,MAX([Value]) as [Max]
    ,AVG([Value]) as [Avg]
    ,SUM([Value]) as [Sum] …
Run Code Online (Sandbox Code Playgroud)

sql-server time-series columnstore azure-sql-database

6
推荐指数
1
解决办法
547
查看次数