terça-feira, 31 de julho de 2007

Indexação no PostgreSQL - II

O PostgreSQL oferece atualmente quatro tipos de indexação:

- B-Tree - Cria índices baseados em árvores B. É o tipo padrão empregado na criação de índices. Facilita consultas utilizando a igualdade de valores ou intervalos de valores (>= > = < <=).

- Hash - Índices Hashing organizam um banco de dados com base em funções. O índice hash funciona em comparações de igualdade (=). Em virtude desta limitação e do fato das operações com Índices Hash atualmente não serem logadas, demandando a reorganização manual de índices após falhas no banco, este índice tem o seu uso desencorajado. No entanto, o uso de índices hash geralmente apresenta resultados melhores que os feitos com B-tree.

- GiST - Índices GiST (Generalized Search Tree) oferecem uma infra-estrutura sobre a qual podem ser implementadas consultas. Geram uma árvore de pesquisa balanceada versátil similar a uma árvore B que pode ser utilizada com estruturas de dados definidas pelo usuário e em implementações diversas como índices para cubos Olap, árvores R (R-Trees) e em busca em texto. Internamente é composta por nós que apresentam pares (Valor, ponteiro para dado indexado ou para outro nó).

- GIN - Índices GIN(Generalized Inverted Index) são estruturas invertidas que permitem acesso a dados com mais de uma chave, como arrays. É composto por uma lista de registros tipo (chave, lista de linhas que contém o valor da chave). Internamente cada índice GIN contém uma árvore B com base no valor da chave indexada, cujas folhas apontam para os valores das linhas relacionadas à chave. Busca em fulltext pode ser acelerada utilizando-se este recurso.

A documentação do PostgreSQL afirma que é possível ao usuário definir o próprio método de indexação, no entanto salienta que o processo é difícil.

Versões anteriores do PostgreSQL apresentavam o método R-Tree, que indexava dados com base em árvores R, mas o mesmo foi removido por não apresentar quaisquer vantagens em relação a índices GiST, que é a principal opção para a sua substituição.

Vamos aos comandos!

Nenhum comentário: