我在 SQL Server 2012 中使用具有以下结构的事实表:
CREATE TABLE [dbo].[factTable] (
[Id] BIGINT IDENTITY (1, 1) NOT NULL,
[Date] DATE NOT NULL,
[MinuteNumber] SMALLINT NOT NULL,
[CityId] INT NOT NULL, /* Foreign key to dimCity */
[Value] DECIMAL(12, 4) NULL
)
我在填充因子为 100 的列上有一个聚集索引。插入到该表中的数据几乎总是按和Date
的升序排列。Date
MinuteNumber
我想知道 - 在给定的场景中是否需要使用 Id 列?它有任何性能影响吗?或者我可以安全地消除它。
我还想知道在
Date
列上具有聚集索引是否就足够了(会有许多记录具有相同的日期,甚至相同的日期和相同的分钟数),还是有一个组合多个列的聚集索引更好;两种方法对性能和存储的影响是什么?
我是新手,任何帮助将不胜感激。