我正在尝试优化一个具有如下代码的过程:
CREATE TABLE #t1 (c1 int, c2 varchar(20), c3(varchar(50)...)
CREATE CLUSTERED INDEX ix_t1 ON #t1(c3) ON [PRIMARY]
我想通过将聚集索引移动到表声明中(更加缓存友好)来改进这一点,但是 c3 不是唯一的,所以这不起作用:
CREATE TABLE #t1 (c1 int, c2 varchar(20), c3 varchar(50)..., UNIQUE CLUSTERED (c3))
有没有办法声明临时表声明中不唯一的集群?
是的,在 SQL Server 2014 及更高版本中是可能的,在MSDN上创建表 https://msdn.microsoft.com/de-de/library/ms174979(v=sql.120).aspx。
从 2014 年开始,您可以在创建表语句中指定内联索引。
if object_id('tempdb..#t1') is not null drop table #t1;
CREATE TABLE #t1 (
c1 int,
c2 varchar(20),
c3 varchar(50),
index [CIX_c3] CLUSTERED (c3),
index [IX_c1] nonclustered (c1)
)
insert #t1(c3) values ('a'), ('a'), ('a')
select * from #t1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)