Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建表时是否可以使用非聚集索引?_Sql_Sql Server - Fatal编程技术网

Sql 创建表时是否可以使用非聚集索引?

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

我在执行上述操作时出错

“索引”附近的语法不正确。如果这是作为表提示的一部分,那么现在需要一个WITH关键字和括号。有关正确的语法,请参阅SQL Server联机丛书


您能否使用在表之后创建索引的传统语法

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)
)