[英]Composite clustered index as primary key vs heap table in SQL Server
为确保唯一性,有一个复合PK(集群),其中包含:
[timestamp] [datetime2]
[userId] [varchar](36)
[cost_type] [varchar](20)
表格中还有两列:
[cost_cent] [bigint] NULL
[consumption_cent] [bigint] NULL
复合群集主键不是理想的(包括varchar),但是替代方法是什么?
是否有一个具有非集群主键的堆表? 另外添加另一个聚集索引吗? 但是在哪一列呢? 没有标识列。
背景:通过Merge
语句对该表进行不间断的插入/更新。 表大小约为5000万行
查询将主要使用时间范围内的PK。
您的索引大小为58个字节,我认为此大小没有什么大问题。
通过Merge语句对该表进行不间断的插入/更新
如果您使用现有的复合键设置(因为56个字节不是那么大),则更新主键是一个危险信号,因为
1.您可能会看到一些碎片
2.更新/删除命令还必须触摸非聚集索引
我会尝试更多的选择,因为5000万的选择并不多
- 您是否需要将此表加入其他表?
- 您需要一种唯一标识记录的方法吗?
2.我还将尝试添加一个标识列并将其作为主键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.