为了确保唯一性,有一个复合PK(聚集)包含:
[timestamp] [datetime2]
[userId] [varchar](36)
[cost_type] [varchar](20)
表格中还有两列:
[cost_cent] [bigint] NULL
[consumption_cent] [bigint] NULL
复合群集主键不理想(包括varchar)但是替代方案是什么?
拥有非群集主键的堆表?另外添加另一个聚集索引?但在什么专栏?没有标识列。
背景:通过Merge
语句对此表进行常量插入/更新。表大小约为5000万行
查询将主要使用具有时间范围的PK。
答案 0 :(得分:1)
你的索引大小是58字节,我不会看到这个大小的大问题..
通过Merge语句
在此表上有一个常量插入/更新
如果你使用复合键的现有设置(因为56字节不是那么大),更新主键是一个红色标记,因为
1.你可能会看到一些碎片 2.update / delete命令也必须触及非聚簇索引
我会尝试更多选项,因为5000万不是很大
- 您是否需要将此表加入其他表?
- 您是否需要一种方法来唯一识别记录?
2.我还会尝试添加一个标识列并将其作为主键..