如何在下面的表变量上创建非聚集索引?我尝试过,但是抛出异常
“ @ TBL”附近的语法不正确
我的代码:
DECLARE @TBL TABLE(ID INT PRIMARY KEY, FROMDATE DATETIME, TODATE DATETIME)
CREATE NONCLUSTERED INDEX IX_myindex
ON @TBL (FROMDATE);
谢谢
答案 0 :(得分:3)
您必须在表定义中声明索引。尽管支持索引(自SQL Server 2014起),但CREATE INDEX
语法不支持表变量。所以:
DECLARE @TBL TABLE (
ID INT PRIMARY KEY,
FROMDATE DATETIME,
TODATE DATETIME,
INDEX idx_tbl_fromdate (FROMDATE)
);
Here是db <>小提琴。
编辑:
如果要使用带有索引的临时表,请使用临时表。如果您的版本支持此语法,则可以执行以下操作:
CREATE temp_table (
ID INT PRIMARY KEY,
FROMDATE DATETIME,
TODATE DATETIME,
INDEX idx_tbl_fromdate (FROMDATE)
);
否则,请分别创建索引。
答案 1 :(得分:0)
您可以在表变量定义中定义INDEX
:
DECLARE @TBL TABLE (
ID INT PRIMARY KEY,
FROMDATE DATETIME,
TODATE DATETIME
INDEX FROMDATE NONCLUSTERED
)