4

我使用 SQL Server 2008。

我正在尝试在我的表上创建一个非聚集索引。我想检查是否有一种方法可以在不给索引命名的情况下创建它。

例如

CREATE TABLE #mytable (Date_ datetime NOT NULL, ID_ varchar(10) NOT NULL, Value_)

当我向该表添加 PK 时,我没有指定该键的名称。例如

ALTER TABLE #mytable ADD PRIMARY KEY CLUSTERED (Date_ ASC, ID_ ASC)

是否可以在不指定名称的情况下执行类似的操作来创建非聚集索引?

例如

ALTER TABLE #mytable ADD NONCLUSTERED INDEX (Date_, Value_)   -- FAILS!!!

我知道的唯一命令是

CREATE NONCLUSTERED INDEX *keyname* ON #mytable (Date_, Value_)  
4

2 回答 2

4

创建临时表后以 guid 作为索引名执行动态续集

DECLARE @NewId VARCHAR(64) = REPLACE(NEWID(),'-','');

EXEC('CREATE INDEX IX_'+@NewId+' ON #Table (ColA,ColB) INCLUDE (ColZ)');

于 2019-04-05T16:28:19.660 回答
2

不,不可能创建没有名称的非聚集索引,语法很清楚:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name

index_name 是索引的名称。索引名称在表或视图中必须是唯一的,但在数据库中不必是唯一的。索引名称必须遵循标识符的规则。

创建索引 (Transact-SQL)

数据库对象名称称为其标识符。Microsoft SQL Server 中的所有内容都可以有一个标识符。服务器、数据库和数据库对象(例如表、视图、列、索引、触发器、过程、约束和规则)可以具有标识符。 大多数对象都需要标识符,但对于某些对象(例如约束)是可选的。

数据库标识符

于 2014-10-24T21:14:34.623 回答