在表变量上创建索引

daw*_*onz 1 sql sql-server sql-server-2014

我正在尝试在表变量上创建索引,这可能吗?

DECLARE @RDTABLE TABLE (TLCDE VARCHAR(12), TLTYP VARCHAR(2), TLEFFDAT DATETIME, TLRATFCT DECIMAL(29,6))

INSERT INTO  
    @RDTABLE
SELECT
    TLCDE
,   TLTYP
,   TLEFFDAT
,   TLRATFCT
FROM    
    BT_TR
WHERE
    TLTYP = 'TX'
Run Code Online (Sandbox Code Playgroud)

通常我会像这样创建索引:

CREATE NONCLUSTERED INDEX IX_RDTABLE ON RDTABLE ([TLTYP],[TLEFFDAT]) 
INCLUDE ([TLCDE],[TLRATFCT]) 
Run Code Online (Sandbox Code Playgroud)

rde*_*isi 6

是的,您可以直接在表变量的脚本中创建索引,如下所示:

DECLARE @RDTABLE TABLE (TLCDE VARCHAR(12), TLTYP VARCHAR(2), TLEFFDAT DATETIME, TLRATFCT DECIMAL(29,6), INDEX [index_name] [NONCLUSTERED/CLUSTERED](column_name))
Run Code Online (Sandbox Code Playgroud)

考虑是否是使用临时表而不是表变量的情况,因为根据情况可能会更好地处理索引

此功能仅在 sqlserver 2014 版本中可用

我在网上找到了这篇文章:

http://www.brentozar.com/archive/2014/04/table-variables-good-temp-tables-sql-2014/