O QUE E INDICE CLUSTERIZADO?

MARCOS 19/04/2011 16:24:18
#371891
Boa tarde!
SQL Server 2005.
Pessoal,eu sei o que é um índice e para que serve. Mas, tenho dúvidas sobre
alguns pontos , que os artigos da internet explicam de modo complicado:


1.) Em linguagem [Ô]Simples[Ô], qual a diferença entre um índice Clusterizado e Não Clusterizado?

2.) Posso partir [Ô]realmente[Ô] da premissa de que ao criar uma tabela no meu BD (Sql Server 2005), é bom criar índice
tanto na chave primária , como em todas as chaves estrangeiras que houver na tabela???

3.) Aquela opção [Ô]Unique[Ô] que aparece quando você cria um índice novo, se refere a que???
LLAIA 19/04/2011 17:03:47
#371900
1 - Clustered

Clustering altera o bloco de dados em uma determinada ordem distinta para coincidir com o índice, resultando na linha de dados seja guardada em ordem. Portanto, somente um índice cluster pode ser criado em uma tabela de banco de dados. Índices de cluster pode aumentar a velocidade geral de recuperação, mas geralmente apenas quando os dados são acessados ​​sequencialmente na mesma ordem ou retrocesso do índice de cluster, ou quando uma série de itens está selecionado.

Visto que os registros físicos são, nesta ordem de classificação no disco, o item próxima linha na seqüência é imediatamente antes ou após a última, e bloco de dados de modo que menos lê são obrigatórios. A principal característica de um índice clusterizado é, portanto, a ordenação das linhas de dados físicos, de acordo com os blocos de índice que aponte para eles. Alguns bancos de dados separam os dados e os blocos de índice em arquivos separados, outros colocam dois blocos de dados diferentes no mesmo arquivo físico (s). Cria um objeto onde a ordem física das linhas é igual à ordem do índice das linhas e do nível (folha) inferior do índice agrupado contém as linhas de dados reais.

Tanto o non clustered e cluestered são bons para leitura, mas o clustered dá mais trabalho para o SGBD salvar os registros na ordem do índice. Se essa tabela te muitas inserções e alterações concorrentes pode ser muito prejudicial.

2

A chave primária é um índice, não é necessário criar um índice nela, e se não me engano é um índice clustered. Embora a chave primária tenha um papel físico no BD, ela tem uma importância maior na definição lógica do modelo e suas dependências funcionais e Formas Normais. Pesquise sobre isso!

Nas chaves esrangeiras é importante criar um índice pois o SGBD usa esses índices para fazer as junções, e com isso vc aumenta o desempenho. Cuidado ao criar índices! Tem que ter critério ao criar índices.

3

Unique = único. Ex. Se vc tem um campo CPF na sua tabela, vc sabe que o CPF é uma sequência única para cada pessoa física no Brasil. é aconselhável que vc ponha um índice do tipo unique nesse campo, pois se alguém tentar registrar duas vezes o mesmo CPF o SGBD não registra e retorna uma exception.


Opa, estou riscando aquela parte com base no que o colega GOODSPEAKERS postou no item 1. A fonte que tirei dizia algo do tipo.

http://pt.w3support.net/index.php?db=so&id=91688
MARCOS 19/04/2011 17:06:52
#371902
Pessoal,
Com relação a resposta do colega GOODSPEKERS....


1.) Eu entendi a explicação do colega.Foi bem detalhada.Mas, se possível, gostaria de uma dica [Ô]prática[Ô]. De como decidir na hora de criar uma tabela, se devo
criar o índice Clusterizado ou Não clusterizado. Por exemplo, se o campo é chave primária, crio o índice Clusterizado ou não. Se for uma chave estrangeira???


2.) A resposta 2, também foi bem clara. Mas, pela resposta fiquei com a impressão de que existe alguma desvantagem em usar vários índices. Existe alguma desvantagem???


3.) Falando em termos práticos.Eu tenho como visualizar no Ms-Sql Server (2005), o índice de uma tabela??? Ou se trata de uma estrutura lógica interna e sem
acesso do SGBD???
Tópico encerrado , respostas não são mais permitidas