Azure SQL数据仓库是否支持临时表上的任何索引?在https://learn.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-tables-tables-pormorary。
一次尝试,我收到了:
Cannot create a non-clustered index on a temporary table.
该措辞推断出一个群集索引可以放在临时表上?
在我的一个项目使用临时表中,在几个列中带有索引,并在选项上添加新列对我来说至关重要。(临时表也不支持Alter表)。标准表不是选项,因为每个查询运行必须拥有自己的表。
最后,我使用了可以用作临时表的东西,但实际上不是临时表。我正在创建一个标准表,但使用GUID作为名称,并将名称分配给变量。因此,我使用@mysemitempt的不是#temptable,但仅适用于生成的代码。因此,我必须使用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
群集索引在温度表上支持。例如:
CREATE TABLE #temp_table
(
c1 integer
,c2 integer
)
WITH ( CLUSTERED INDEX (c1 ASC) )
;