Azure SQL 数据仓库中临时表的索引

Indexing on temporary tables in Azure SQL Data Warehouse

A​​zure SQL 数据仓库是否支持临时 table 上的任何索引? https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-temporary.

中未提及该限制

在一次尝试中,我收到了:

 Cannot create a non-clustered index on a temporary table. 

该措辞是否意味着聚集索引可以放置在临时 table 上?

临时表支持聚簇索引。例如:

CREATE TABLE #temp_table   
    ( 
    c1 integer
    ,c2 integer
    )  
     WITH (  CLUSTERED INDEX (c1 ASC) )   

;

在我的一个项目中使用临时 tables,在多个列上有索引,并且可以选择向它们添加新列,这对我来说非常重要。 (临时 tables 也不支持 ALTER TABLE)。标准 table 不是选项,因为每个查询 运行 必须有自己的 table.

最后,我使用了一些可以用作临时table但实际上不是临时table的东西。我正在创建一个标准 table 但使用 Guid 作为名称并将名称分配给变量。因此,我使用的不是#TempTable,而是@MySemiTempTable,但这仅适用于生成的代码。所以我必须 运行 该代码使用 sp_executesql。下面的例子:

declare @MySemiTempTable  NVARCHAR(MAX)
declare @sql  NVARCHAR(MAX)

set @MySemiTempTable = 'TMP_' + CAST(NEWID () AS NVARCHAR(37))
set @sql = 'CREATE TABLE ['+ @MySemiTempTable + '] (Column1 [int], Column2 NVARCHAR(50))'
EXECUTE sp_executesql @sql
set @sql = 'INSERT INTO ['+ @MySemiTempTable + ']   VALUES (1, ''test1'')'
EXECUTE sp_executesql @sql

set @sql = 'create unique index column1 on  ['+ @MySemiTempTable + '] (column1)'
EXECUTE sp_executesql @sql

set @sql = 'select * from  ['+ @MySemiTempTable + '] '
EXECUTE sp_executesql @sql

set @sql = 'drop table   ['+ @MySemiTempTable + '] '
EXECUTE sp_executesql @sql