s tipos de índices no SQL Server podem ser:
Clustered
Um índice clustered [agrupado] é aquele onde a ordem física das páginas de dados é a mesma ordem do índice. A cada inserção, numa tabela que tem um índice agrupado, a ordem física dos dados pode mudar. Só pode haver um único índice agrupado por tabela.Se você não especificar o indice Clustered a sua tabela será criada com o índice Non-clustered.
Recomenda-se criar um índice agrupado antes de qualquer outro, pois ao criá-lo, as linhas da tabela são reordenadas fisicamente e todos os outros índices são reconstruídos.
É recomendável usar um índice agrupado para a coluna que representa a ordem mais natural da tabela, ou seja, a ordem na qual geralmente os resultados serão apresentados.
Non-clustered
Um índice non-clustered [não-agrupado] possui uma ordem física diferente da ordem dos dados. Existe um nível a mais, de ponteiros para os dados, que permite acessá-los indiretamente.
Pode haver mais de um índice não-agrupado na tabela, até o máximo de 249 índices, incluindo qualquer índice criado com restrições PRIMARY KEY ou UNIQUE.
Quando o tipo de índice da tabela não for específicado ele será criado como um índice Nonclustered.
Para os exemplos de criação de índice, crie a tabela abaixo:
CREATE TABLE TES_EMPREGADO
(
EMP_IN_CODIGO INT IDENTITY CONSTRAINT TES_PK_EMPREGADO PRIMARY KEY CLUSTERED,
EMP_ST_NOME VARCHAR(50),
EMP_DT_PAGAMENTO DATETIME,
EMP_IN_RG VARCHAR(15) CONSTRAINT TES_UK_EMP_RG UNIQUE NONCLUSTERED
);
Exemplos de sintaxe de criação de índices:
CREATE INDEX TES_IDX_EMP_NOME ON TES_EMPREGADO(EMP_ST_NOME);
CREATE UNIQUE INDEX TES_IDX_EMP_NOME ON TES_EMPREGADO(EMP_ST_NOME);
CREATE INDEX TES_IDX_EMP_NOMEPAGAMENTO ON
TES_EMPREGADO(EMP_ST_NOME,EMP_DT_PAGAMENTO);
--Exemplo de sintaxe de remoção de índices:
DROP INDEX TES_IDX_EMP_NOME ON TES_EMPREGADO;