Array
(
)

Indice clusterizado

Pjava
   - 09 ago 2011

Quando e porque ao criar um Indice Não Único, devo criá-lo clustered ou não? O que isso impacta em uma consulta ou atualização em termos de performance?

Marco Pinheiro
   - 09 ago 2011

Seguem informações:

Índices clusterizados

•Em um índice clusterizado os dados são fisicamente ordenados de forma ascendente, por isto é possível apenas um índice clusterizado por tabela. A ordenação tanto fisicamente dos dados como do índice é a mesma. •Os índices cluster são bastante usados em colunas muito acessadas por range de valores, ou acessadas por ordenações. •Ao criar uma chave primária por default ela vem como clusterizado se não houver já um índice cluster, mas é opcional podendo mudar para não cluster.

 Índices Não clusterizados

•Quando o índice é não clusterizado a construção é feita no heap (amontoado), o SQL usa as linhas como identificadores de índices. A linha identifica local de informação de armazenamento de dados. •Chama-se heap porque na sua tradução significa amontoado, isto porque os dados não tem um ordem lógica, são gravados nas páginas que tem espaço disponível. •Nesta arquitetura quem se incumbe de dizer se existe espaço ou não é o IAM (Index Allocation Map Pages), a tabela de sistema sysindexes armazena a primeira página IAM associado ao Heap. Um IAM diz ao SQL que usa um índice não clusterizado que uma query acabou de apagar um registro, e ali existe um espaço para a próxima gravação. •Os índices não cluster são muito usados quando necessitamos encontrar uma informação de várias formas diferentes como por exemplo, queremos encontrar um livro pelos campos Nome, Autor, Editora, Tipo, Número de páginas etc, porque ao contrário do cluster o índice não cluster é aconselhado para colunas com alta densidade (também chamado baixa cardinalidade), ou seja, bastante valores repetidos. •A ordem de um índice deste tipo é diferente da ordenação fisica, podendo até ter 249 índices não cluster por tabela.

Índice cluster misturado com índice Não cluster

•Tabelas que contém índices cluster e índices não cluster é muito comum, o melhor nestas situações é criar o índice cluster primeiro (que irá organizar os dados e o índice em ordem ascendente) e depois criar o índice não clusterizado nas colunas que forem necessárias como FK´s, ou colunas muito acessadas.

Algumas Dicas quanto a índices

- Colunas para se indexar:

•PK´s , FK´s , Colunas que se acessam por ranges (BETWEEN, > < ) , Colunas que se usa para sort order, •Colunas que se usa para grouping ou agregações

- Colunas para não se indexar

•Coluna que você raramente referencia numa query •Colunas com alta cardinalidade como por exemplo Masculino e Feminino •Colunas com Ntext, Image, Text

Att.,

Marco.

0
|
0