Diferença entre índice de cluster e não cluster

Índice de cluster vs sem cluster

Os índices são muito importantes em qualquer banco de dados. Eles são usados ​​para melhorar o desempenho da recuperação de dados de tabelas. Eles são lógica e fisicamente independentes dos dados nas tabelas associadas. Portanto, os índices podem ser descartados, recriados e reconstruídos sem afetar os dados das tabelas base. O servidor Oracle pode manter automaticamente seus índices sem o envolvimento de um DBA, quando as tabelas relacionadas são inseridas, atualizadas e excluídas. Existem vários tipos de índice. Aqui estão alguns deles.

1. índices da árvore B

2. índices de bitmap

3. Índices baseados em funções

4. Índices de chave reversa

5. índices de cluster em árvore B

O que é um índice sem cluster?

Dos tipos de índice acima, a seguir estão os índices sem cluster.

• índice da árvore B

Índice de bitmap

• Índice baseado em funções

• índices de chave reversa

Os índices da árvore B são o tipo de banco de dados de índice mais usado. Se o comando CREATE INDEX for emitido no banco de dados, sem especificar um tipo, o servidor Oracle criará um índice b-tree. Quando um índice b-tree é criado em uma coluna específica, o oracle server armazena os valores da coluna e mantém uma referência à linha real da tabela.

Os índices de bitmap são criados quando os dados da coluna não são muito seletivos. Isso significa que os dados da coluna têm uma baixa cardinalidade. Eles são projetados especialmente para data warehouses e não é bom usar índices de bitmap em tabelas transacionais ou altamente atualizáveis.

Os índices funcionais são provenientes do Oracle 8i. Aqui, uma função é usada na coluna indexada. Portanto, em um índice funcional, os dados da coluna não são classificados da maneira normal. Classifica os valores das colunas após aplicar a função. Isso é muito útil quando o fechamento WHERE da consulta de seleção é usado como uma função.

Os índices de chave reversa são um tipo de índice muito interessante. Vamos supor que uma coluna contenha muitos dados de string exclusivos como 'cityA', 'cityB', 'cityC'… etc. Todos os valores têm um padrão. Os primeiros quatro caracteres são os mesmos e as próximas partes são alteradas. Portanto, quando o índice de chave REVERSE for criado nessa coluna, o Oracle reverterá a string e a restaurará em um índice b-tree.

Os tipos de índice mencionados acima são índices NÃO CLUSTERED. Isso significa que os dados indexados são armazenados fora da tabela e uma referência classificada à tabela é mantida.. 

O que é um índice agrupado?

Os índices agrupados são um tipo especial de índices. Ele armazena dados de acordo com a maneira de armazenar dados da tabela fisicamente. Portanto, não pode haver muitos índices agrupados para uma tabela. Uma tabela pode ter apenas um índice em cluster.

Qual é a diferença entre índices agrupados e não agrupados?

1. A tabela pode ter apenas um índice em cluster, mas pode haver até 249 índices não em cluster em uma tabela.

2. O índice clusterizado é criado automaticamente quando uma chave primária é criada, mas um índice não clusterizado é criado quando uma chave exclusiva é criada.

3. A ordem lógica do índice clusterizado corresponde à ordem física dos dados da tabela, mas em índices não clusterizados, ela não.