如何在 Create Table 中创建非聚集索引?

Posted

技术标签:

【中文标题】如何在 Create Table 中创建非聚集索引?【英文标题】:How to create nonclustered index in Create Table? 【发布时间】:2010-04-22 10:20:01 【问题描述】:
Create table FavoriteDish    
(    
FavID int identity (1,1) primary key not null,    
DishID int references Dishes(DishID) not null ,    
CelebrityName nvarchar(100)  nonclustered not null     
)

这会导致

关键字“nonclustered”附近的语法不正确。

我参考了关于创建表语法的 MSDN 帮助。我不确定这里有什么问题。

【问题讨论】:

Create a nonclustered non-unique index within the CREATE TABLE statement with SQL Server的可能重复 @AaronLS 这个特定问题的第一个含义是比您所指的问题更早。这意味着您指向的那个可以称为这个的副本,反之亦然 【参考方案1】:

在线书籍的帮助中确实提到了关键字 CLUSTERED,但它仅与 UNIQUE 或 PRIMARY KEY 约束相关。这两个约束都创建了一个索引,您可以指定该索引是集群的还是非集群的。

您不能使用该语法来创建标准的非聚集索引。

Create table FavoriteDish    
(    
FavID int identity (1,1) primary key not null,    
DishID int references Dishes(DishID) not null ,    
CelebrityName nvarchar(100)   constraint ux_CelebrityName unique NONCLUSTERED not null     
)

【讨论】:

啊哈,有道理。那么它应该是msdn上的一个子句。 不要忘记为索引添加正确的命名约定 PK_ 用于主键 UK_ 用于唯一键 IX_ 用于非聚集非唯一索引 UX_ 用于唯一索引 我所有的索引名称都采用 ____【参考方案2】:

删除这个非聚集关键字并使用 CREATE INDEX 语句为这个表添加索引,这个文档可以读入:

http://msdn.microsoft.com/en-us/library/ms188783.aspx

语法在这里:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> ( column [ ASC | DESC ] [ ,...n ] ) 
    [ INCLUDE ( column_name [ ,...n ] ) ]
    [ WHERE <filter_predicate> ]
    [ WITH ( <relational_index_option> [ ,...n ] ) ]
    [ ON  partition_scheme_name ( column_name ) 
         | filegroup_name 
         | default 
         
    ]
    [ FILESTREAM_ON  filestream_filegroup_name | partition_scheme_name | "NULL"  ]

[ ; ]

代码在这里:

CREATE NONCLUSTERED INDEX index_clustered ON FavoriteDish(CelebrityName asc)

【讨论】:

Svisstack,谢谢,我知道这一点,但我不能在 create table 语句中创建它。正如 Create Table 语法所说,可以使用 Create Table 语句创建 NON-UNIQUE NONCLUSTERED 索引 请看这里:***.com/questions/6193293/…

以上是关于如何在 Create Table 中创建非聚集索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ejabberd 中创建非匿名房间 [关闭]

如何在 .NET 中创建非 OwnerDraw 按钮?

如何在 SQL Server 中创建聚集索引,同时仍保留主键?

如何在 MFC 中创建非交互式窗口

如何在 Visual Studio 2019 C++ 中创建非虚拟文件夹

如何使作曲家在容器中创建非root用户拥有的文件?