我现在有一个零行的表,但一年内会增长到 4-5 百万。biglogid 使用“COMB GUID”来防止表/索引碎片化。添加行时,rowstate 的值为 1。但是,当不需要行时,它们将设置为 null(除了每年清理,业务规则外,不能删除任何内容)。由于这意味着最终会有比非空列更多的空列,因此行状态列被设为稀疏。
从表中选择将是“从 biglog 中选择 logtext,其中 biglogid=......并且 rowstate 不为空”,仅在它处于活动状态时才获取值。如果这是对表运行的唯一真正查询,那么使 PK 成为过滤索引是否有价值?如果是这样,那么 TSQL 语法是什么?
谢谢。
CREATE TABLE biglog(
biglogid [uniqueidentifier] NOT NULL,
logtext [varchar](400) NOT NULL,
rowstate [tinyint] SPARSE NULL,
CONSTRAINT biglogpk PRIMARY KEY CLUSTERED
(
biglogid ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 85) ON [PRIMARY]
) ON [PRIMARY]