临时表内联索引:UNIQUE CLUSTERED与NON-UNIQUE NONCLUSTERED命名疑问
关于SQL Server非唯一内联索引是否可省略名称的问题
问题背景
创建内联UNIQUE CLUSTERED索引时,确实无需指定索引名称,SQL Server会自动生成系统默认名称,示例代码:
CREATE TABLE [#TEMP01] ( [TradeDate] DATE NOT NULL UNIQUE CLUSTERED([TradeDate]) );
而常规创建非唯一/非聚集内联索引时,通常会指定索引名称,示例:
CREATE TABLE [#TEMP02] ( [TradeDate] DATE NOT NULL INDEX [IX_TradeDate] NONCLUSTERED([TradeDate]) );
结论
可以不指定名称创建非唯一内联索引,只需省略INDEX后的名称部分,直接使用INDEX NONCLUSTERED(列名)的语法即可,SQL Server会自动生成系统默认的索引名称。示例代码:
CREATE TABLE [#TEMP03] ( [TradeDate] DATE NOT NULL INDEX NONCLUSTERED([TradeDate]) );
执行后可通过sp_helpindex '#TEMP03'查看自动生成的索引名称,格式通常为类似_dta_index_#TEMP03_...的系统命名。
内容的提问来源于stack exchange,提问作者Bill Roberts
相关产品推荐
相关产品推荐

