Arquivo:Indice Agrupamento.pdf

O que são índices de agrupamento?

Índice de agrupamento ou ordenado é o armazenamento dos dados em uma página de dados, em ordem crescente, por atributos não-chave. A ordem dos valores nas páginas de índice também é crescente e eles podem ter valores repetidos.

O que é clustering?

Clustering é uma técnica para fazer agrupamentos automáticos de dados segundo seu grau de semelhança. O critério de semelhança faz parte da definição do problema.

O índice de agrupamento determina quantas linhas são fisicamente ordenadas (agrupadas) num espaço da tabela. Uma tabela pode ter vários índices, mas apenas um pode ser índice de agrupamento. Se ele não for definido previamente, o sistema escolhe o primeiro índice criado como índice de agrupamento. Por essa razão, sempre defina seu índice de agrupamento, ou então o banco de dados pode não escolher aquele desejado.

Quando não declaramos NONCLUSTERED em uma chave-primaria, este campo automaticamente assume o valor de CLUSTERED. Mas, alguns fatos devem ser levados em conta na criação de índices agrupados, tais como:

• Cada tabela poderá ter apenas um e somente um índice agrupado;

• A ordem dos registros da tabela e a ordem dos registros do índice são iguais. Você deve criar índice de agrupamento antes de criar índices sem agrupamento, pois um índice de agrupamento altera a ordem física dos registros da tabela. Os registros são classificados em uma ordem sequenciada e mantidos nessa ordem;

• A exclusividade de valores de chave é mantida de modo explícito, com a palavra-chave UNIQUE, ou de modo implícito, com um identificador interno único. Esses identificadores são internos do SQL Server e não podem ser acessados pelo usuário;

• 5 % do tamanho da tabela é o limite para o tamanho permitido para o valor do atributo indexado;

• Durante a criação de um índice de agrupamento, será necessário espaço em disco de aproximadamente 1,2 vezes o tamanho atual da tabela na qual pertence à coluna que será indexada. Após esta operação, o espaço em disco é restaurado automaticamente.

Vantagens

O uso de índices pode trazer grandes melhorias para o desempenho do banco de dados.

Os índices de agrupamento aceleram a recuperação dos dados. Por exemplo, imagine que você compre um livro de 800 páginas para suas pesquisas acadêmicas e este não apresente em seu conteúdo um índice reportando o seu conteúdo. Uma pesquisa talvez não fosse tão pavorosa, mas se você precisar de várias pesquisas, seria muito desagradável ficar horas procurando o conteúdo que deseja estudar. Por outro lado, um livro que apresente um índice de suas abordagens, se faz muito mais fácil e torna as pesquisas até prazerosas, pois teremos condição de irmos direto ao ponto que queremos.

Desvantagens

Os índices são muito bons no sentido de performance do banco de dados, otimizam as buscas de dados, mas, por outro lado, consomem muito espaço em disco, o que pode se tornar concorrente do próprio banco se você o detém em um espaço generoso ou pode se tornar caro. Além disso, a manutenção de índices requer tempo e recursos, portanto, não crie índices que não serão usados efetivamente;

Exemplo com Imagem

Exemplo 1: As páginas dos níveis 1 e 2, destacadas em verde são páginas de índices. No nível 1, cada página contém informação de 500,000 arquivos. Cada página não tem 500,000 linhas, mas sim 500,000 valores de índices de agrupamento, mais a seta apontando para a página associada no próximo nível. Para recuperar os detalhes para Employee 500, SQL Server iria ler três páginas: A raiz ( nível 2), intermediária (nível 1) e a folha apropriada (nível 0)

Exemplo2: Suponha que você muitas vezes precisa reunir informações de funcionários por departamento. Na tabela de EMP , você pode criar um índice de agrupamento na coluna DEPT . Como resultado , todas as linhas para o mesmo departamento provavelmente são próximas umas das outras . SGBD geralmente podem acessar todas as linhas para que o departamento em uma única leitura. A figura a seguir mostra um índice de agrupamento na coluna DEPT da tabela EMP ; apenas um subconjunto das linhas é mostrada .


Exemplo 3: Índice de agrupamento com blocos para cada valor de busca

Referências

[1]Entendendo e usando índices. Disponível em: <http://www.devmedia.com.br/entendendo-e-usando-indices-parte-1/6567>


[2] Organização e indexação de dados. Disponível em: <http://www.inf.ufsc.br/~fileto/Disciplinas/BD-Avancado/Aulas/01-Indexacao.pdf>


[3] Indexing. Disponível em: <http://210.36.18.53/guping/dzkj/8-0.html>


[4] Effective Clustered Indexes. Disponível em: <https://www.simple-talk.com/sql/learn-sql-server/effective-clustered-indexes/>