¿Azure SQL Data Warehouse admite la indexación en tablas temporales? No se encuentra ninguna mención de la limitación en https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-temporary.

En un intento, recibí:

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

¿Esa redacción infiere que un índice agrupado se puede colocar en una tabla temporal?

2
Steve 16 dic. 2016 a las 00:12

2 respuestas

La mejor respuesta

Los índices agrupados se admiten en tablas temporales. Por ejemplo:

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

;

2
Steve 15 dic. 2016 a las 21:30

En una de las tablas temporales de uso de mi proyecto con índices en varias columnas y con la opción de agregar nuevas columnas fue bastante crítico para mí. (ALTER TABLE tampoco es compatible con tablas temporales). La tabla estándar no era la opción ya que cada ejecución de consulta tenía que tener su propia tabla.

Finalmente, utilicé algo que se puede usar como tablas temporales, pero de hecho no es una tabla temporal. Estoy creando una tabla estándar pero con Guid como nombre y asigno el nombre a una variable. Entonces, en lugar de #TempTable, estoy usando @MySemiTempTable pero eso funciona solo para el código generado. Entonces tengo que ejecutar ese código usando sp_executesql. Ejemplo de abajo:

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
0
Krzysztof Krysztofczyk 30 abr. 2020 a las 22:25