2 Índices em Variáveis do tipo Table
Muitas vezes temos a necessidade de criar 2 índices em variáveis do tipo table, mas o comando CREATE INDEX @TMP… não roda pois não são permitidos comandos DDL em variáveis do tipo table, porém é possível definir 2 índices no comando de create da tabela, segue um exemplo bem prático.
SET STATISTICS PROFILE ON
DECLARE @Tmp TABLE(ID Int IDENTITY(1,1) PRIMARY KEY,
Nome VarChar(200))
SELECT * FROM @Tmp
WHERE ID = 10
/*
SELECT * FROM @Tmp WHERE ID = 10
|–Clustered Index Seek(OBJECT:(@Tmp), SEEK:([ID]=(10)) ORDERED FORWARD)
*/
SELECT * FROM @Tmp
WHERE Nome = ‘Teste’
/*
SELECT * FROM @Tmp WHERE Nome = ‘Teste’
|–Clustered Index Scan(OBJECT:(@Tmp), WHERE:([Nome]=’Teste’))
*/
GO
— Exemplo de UNIQUE
DECLARE @Tmp TABLE(ID Int IDENTITY(1,1) PRIMARY KEY,
Nome VarChar(200) UNIQUE)
SELECT * FROM @Tmp
WHERE ID = 10
/*
SELECT * FROM @Tmp WHERE ID = 10
|–Clustered Index Seek(OBJECT:(@Tmp), SEEK:([ID]=(10)) ORDERED FORWARD)
*/
SELECT * FROM @Tmp
WHERE Nome = ‘Teste’
/*
SELECT * FROM @Tmp WHERE Nome = ‘Teste’
|–Index Seek(OBJECT:(@Tmp), SEEK:([Nome]=’Teste’) ORDERED FORWARD)
*/