sql – 临时表上的聚簇索引

我正在尝试优化具有以下代码的过程:

CREATE TABLE #t1 (c1 int, c2 varchar(20), c3(varchar(50)...)

CREATE CLUSTERED INDEX ix_t1 ON #t1(c3) ON [PRIMARY]

我想通过将CLUSTERED索引移动到表声明(更多缓存友好)来改进它,但c3不是唯一的,所以这不起作用:

CREATE TABLE #t1 (c1 int, c2 varchar(20), c3 varchar(50)..., UNIQUE CLUSTERED (c3))

有没有办法声明一个在临时表声明中不唯一的聚簇?

最佳答案 不存在……在表创建中将聚簇定义为选项的能力的存在是支持声明主键和唯一列约束,它们自己创建索引.换句话说,CREATE TABLE语句中的CLUSTERED指定由UNIQUE约束创建的索引是应该是聚簇还是非聚簇,这很重要,因为表只能有一个聚簇索引.

点赞