Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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,如何在下面的表变量上创建非聚集索引?我试过了,但它抛出了一个异常 “@TBL”附近的语法不正确 我的代码: DECLARE @TBL TABLE(ID INT PRIMARY KEY, FROMDATE DATETIME, TODATE DATETIME) CREATE NONCLUSTERED INDEX IX_myindex ON @TBL (FROMDATE); 谢谢您必须在表定义中声明索引。虽然支持索引(自SQL Server 2014年起),但创建索引语法不支持表变量。因此:

如何在下面的表变量上创建非聚集索引?我试过了,但它抛出了一个异常

“@TBL”附近的语法不正确

我的代码:

DECLARE @TBL TABLE(ID INT PRIMARY KEY, FROMDATE DATETIME, TODATE DATETIME)

CREATE NONCLUSTERED INDEX IX_myindex 
ON @TBL (FROMDATE);  

谢谢

您必须在表定义中声明索引。虽然支持索引(自SQL Server 2014年起),但
创建索引
语法不支持表变量。因此:

DECLARE @TBL TABLE (
    ID INT PRIMARY KEY,
    FROMDATE DATETIME,
    TODATE DATETIME,
    INDEX idx_tbl_fromdate (FROMDATE)
);
他是一把小提琴

编辑:

如果需要具有索引的临时表,请使用临时表。如果您的版本支持此语法,则可以执行以下操作:

CREATE temp_table (
    ID INT PRIMARY KEY,
    FROMDATE DATETIME,
    TODATE DATETIME,
    INDEX idx_tbl_fromdate (FROMDATE)
);

否则单独创建索引。

必须在表定义中声明索引。虽然支持索引(自SQL Server 2014年起),但
创建索引
语法不支持表变量。因此:

DECLARE @TBL TABLE (
    ID INT PRIMARY KEY,
    FROMDATE DATETIME,
    TODATE DATETIME,
    INDEX idx_tbl_fromdate (FROMDATE)
);
他是一把小提琴

编辑:

如果需要具有索引的临时表,请使用临时表。如果您的版本支持此语法,则可以执行以下操作:

CREATE temp_table (
    ID INT PRIMARY KEY,
    FROMDATE DATETIME,
    TODATE DATETIME,
    INDEX idx_tbl_fromdate (FROMDATE)
);

否则单独创建索引。

您可以在表变量定义中定义
索引

DECLARE @TBL TABLE (
     ID INT PRIMARY KEY, 
     FROMDATE DATETIME, 
     TODATE DATETIME
     INDEX FROMDATE NONCLUSTERED
)

您可以在表变量定义中定义
索引

DECLARE @TBL TABLE (
     ID INT PRIMARY KEY, 
     FROMDATE DATETIME, 
     TODATE DATETIME
     INDEX FROMDATE NONCLUSTERED
)

您可以在此处查看您可以在此处查看“索引附近的语法不正确”。如果这是表提示的一部分,则现在需要带关键字和括号的。有关正确的语法,请参阅SQL Server联机丛书。“@user…”。如答案所述,表变量中的显式索引仅在SQL Server 2014之后才受支持。您可能正在使用不支持此功能的旧版本。在这种情况下,只需使用临时表。根据副本,您可以为此创建唯一的约束<代码>声明@TBL表(ID INT主键,FROMDATE DATETIME,TODATE DATETIME,唯一的非聚集(FROMDATE,[ID])这与@TBL(FROMDATE)上的
创建非聚集索引IX_myindex相同仍将创建。如果这是表提示的一部分,则现在需要带关键字和括号的。有关正确的语法,请参阅SQL Server联机丛书。“@user。如答案所述,表变量中的显式索引仅在SQL Server 2014之后才受支持。您可能正在使用不支持此功能的旧版本。在这种情况下,只需使用临时表。根据副本,您可以为此创建唯一的约束<代码>声明@TBL表(ID INT主键,FROMDATE DATETIME,TODATE DATETIME,唯一的非聚集(FROMDATE,[ID])这与@TBL(FROMDATE)上的
创建非聚集索引IX_myindex相同仍将创建