none
índices RRS feed

  • Pergunta

  • Bem estou estudando banco de dados e cheguei em índices, o que eu pude perceber é que índices
    deixa a consula mais rápida, em vez de de percorrer todas as páginas com o índice vai direto ao ponto
    mas tenho algumas dúvidas sobre indices, eu posso dar um select diretamente do índice que eu criei..?
    o que é índice clusterizados e índice não clusterizados ..?
    segunda-feira, 10 de setembro de 2007 13:29

Respostas

  •  

    E aí!!!

     

    Vamos ver se consigo explicar:

     

    Primeiro, o Clustered, geralmente é definido juntamente com a chave primária da tabela. Uma característica importante deste tipo de indice é que ele determina a ordem da gravação (ordenação física) dos registros. Por isso, na maioria dos casos é definido sobre chaves auto-incremento, de forma que os dados já sejam ordenados nativamente. Se for definido sobre uma coluna que não segue uma ordem pré-definida, toda vez que for gravado um novo registro será necessário movimentar dados para "encaixar" o novo registro. Por causa dessa ordernação física das informações, só podemos ter um destes índices por tabela.

    Depois, o Non-Clustered, é interessante ser definido sobre chaves extrangeiras, já que as FKs não criam índice por padrão, e para acelerar o processo de busca de informações quando associamos duas tabelas criamos índices nas FKs. Este índice não influencia na ordem física dos registros, mas ele cria uma estrutura paralela, com a cópia da coluna que foi definida como chave. Imagine se definir um destes índices sobre uma coluna chamada Nome, ele irá copiar o valor de cada registro e armazenar essa estrutura paralela, a qual sim é ordenada, agilizando o acesso as informações. Claro, além do valor do campo chave, é gravado uma informação de qual registro está relacionado e sua localização física.

     

    Também é bom fazermos a definição de índices Non-Clustered sobre colunas muito referenciadas dentro de clausulas WHERE.

     

    Bom, não sei se deu pra explicar direito. Qualquer coisa, retorne.

     

     

    Abraço

    segunda-feira, 10 de setembro de 2007 13:39

Todas as Respostas

  •  

    E aí!!!

     

    Vamos ver se consigo explicar:

     

    Primeiro, o Clustered, geralmente é definido juntamente com a chave primária da tabela. Uma característica importante deste tipo de indice é que ele determina a ordem da gravação (ordenação física) dos registros. Por isso, na maioria dos casos é definido sobre chaves auto-incremento, de forma que os dados já sejam ordenados nativamente. Se for definido sobre uma coluna que não segue uma ordem pré-definida, toda vez que for gravado um novo registro será necessário movimentar dados para "encaixar" o novo registro. Por causa dessa ordernação física das informações, só podemos ter um destes índices por tabela.

    Depois, o Non-Clustered, é interessante ser definido sobre chaves extrangeiras, já que as FKs não criam índice por padrão, e para acelerar o processo de busca de informações quando associamos duas tabelas criamos índices nas FKs. Este índice não influencia na ordem física dos registros, mas ele cria uma estrutura paralela, com a cópia da coluna que foi definida como chave. Imagine se definir um destes índices sobre uma coluna chamada Nome, ele irá copiar o valor de cada registro e armazenar essa estrutura paralela, a qual sim é ordenada, agilizando o acesso as informações. Claro, além do valor do campo chave, é gravado uma informação de qual registro está relacionado e sua localização física.

     

    Também é bom fazermos a definição de índices Non-Clustered sobre colunas muito referenciadas dentro de clausulas WHERE.

     

    Bom, não sei se deu pra explicar direito. Qualquer coisa, retorne.

     

     

    Abraço

    segunda-feira, 10 de setembro de 2007 13:39
  • Alexandre,

     

    Parabéns pela explicação.

     

    Gostaria só de acrescentar que é importante evitar o uso dos comandos In, Not ou Like sobre os campos com índices clustered ou non-clustered, este tipo de pesquisa através destes comandas degrada em muito a performance da aplicação.

     

    Eu gosto de dizer que o índices clustered trabalha da mesma forma que um dicionário, ou seja, se conteudo é organizado de maneira sequencial e lógica, já o índice non-clustered utiliza outra forma de organização(não física) para organizar os dados, através de uma análise feita sobre a própria coluna que se refere ao índice não clustered.

     

    Espero ter contribuído com esta explicação.

    segunda-feira, 10 de setembro de 2007 14:25