Sql 创建表时是否可以使用非聚集索引?
我在执行上述操作时出错 “索引”附近的语法不正确。如果这是作为表提示的一部分,那么现在需要一个WITH关键字和括号。有关正确的语法,请参阅SQL Server联机丛书Sql 创建表时是否可以使用非聚集索引?,sql,sql-server,Sql,Sql Server,我在执行上述操作时出错 “索引”附近的语法不正确。如果这是作为表提示的一部分,那么现在需要一个WITH关键字和括号。有关正确的语法,请参阅SQL Server联机丛书 您能否使用在表之后创建索引的传统语法 create table tblPeople ( sno int primary key , Name nvarchar(50), Gender nvarchar(10) , Age int , index IX_tblPeople
您能否使用在表之后创建索引的传统语法
create table tblPeople
(
sno int primary key ,
Name nvarchar(50),
Gender nvarchar(10) ,
Age int ,
index IX_tblPeople_Age nonclustered(age)
)
根据,此语法适用于SQL Server 2014版及更高版本。您可以在文章中找到以下信息:
适用于:SQL Server 2014至SQL Server 2017和Azure SQL
数据库
指定在表上创建索引。这可以是集群
索引,或非聚集索引。索引将包含列
列出,并将按升序或降序对数据进行排序
秩序
因此,如果您的版本在2014年之前,我建议使用以下语法:
INDEX *index_name* [ CLUSTERED | NONCLUSTERED ] (*column_name* [ ASC | DESC ] [ ,... *n* ] )
使用与2008兼容的内联语法和
CREATE TABLE tblPeople (
sno int primary key ,
Name nvarchar(50),
Gender nvarchar(10) ,
Age int
)
GO
CREATE NONCLUSTERED INDEX IX_tblPeople_Age ON tblPeople (age);
由于
sno
将是CI键,SQL Server始终将聚集键添加到在具有聚集索引的表上创建的非唯一非聚集索引的键中。SQL Server的哪个版本?2016年为我工作。Microsoft声明它适用于2014年及以后的版本。它在2012年对我不起作用,还有一个例子,从创建表t4(c1 int,c2 int,INDEX ix_1 NONCLUSTERED(c1,c2))到创建表t4(c1 int,c2 int,INDEX ix_1 NONCLUSTERED(c1,c2))相同的错误消息。根据此语法,从SQL Server 2014版开始应该可以使用。非常感谢。。但括号内是否有任何可能的疑问?
CREATE TABLE tblPeople (
sno int primary key ,
Name nvarchar(50),
Gender nvarchar(10) ,
Age int
)
GO
CREATE NONCLUSTERED INDEX IX_tblPeople_Age ON tblPeople (age);
create table tblPeople
(
sno int primary key ,
Name nvarchar(50),
Gender nvarchar(10) ,
Age int ,
Constraint IX_tblPeople_Age unique nonclustered(age, sno)
)