Vlw D+ Dickson!

Em quarta-feira, 19 de agosto de 2015, Dickson S. Guedes <
[email protected]> escreveu:

> Em 19 de agosto de 2015 12:28, Gerdan Rezende dos Santos
> <[email protected] <javascript:;>> escreveu:
> > Pessoal, não entendo muito claramente como funcionam os índices GIN e
> GIST
> > alguém tem uma referencia boa???
> > Li o o manual mas não ficou muito claro...
>
> Não sei exatamente "o quê" você deseja saber sobre eles, então sendo
> um pouco genérico, poderiamos resumir que:
>
> Basicamente temos indices B-tree que permitem que você busque
> registros comparando se A é igual ou não a B, ou se A é menor/maior ou
> não a B.
>
> Vocẽ também tem indices do tipo hash, que só te permitem buscar
> registros comparando se A é igual a B.
>
> O GiST, por sua vez, generalizou mais a busca na árvore, permitindo
> que você implemente indices que não sejam só um B-tree mas que possa
> indexar outros tipos complexos como B+-tree, R-tree, etc também de
> forma balanceada, mas de um modo que a chave não possua as restrições
> do B-tree. Com o GIST voce pode usar algum operador especifico ja
> implementado ou implementar um indice (codificando "na unha" em C) com
> um tipo específico seu. Divagando um pouco, pense num jogo de
> asteroides, imagine que de alguma forma você está armazenando no banco
> poligonos que represente o contorno deles e deseja saber quais
> asteroides estão colidindo com a sua nave, isso vai te remeter a uma
> inevitável comparação entre as bordas destes poligonos, que estão ali,
> armazenados em seu banco, mas não são simples inteiros, são eles dados
> complexos que precisam ser comparados entre si de uma forma diferente
> do que voce compara  WHERE "1 < 2". O GIST te ajuda nisto e suas
> chaves internas que apontam para as estruturas são baseadas em uma
> tabela hash o que faz com que ele possa ser mais lento em condições
> que uma mesma chave contenha vários possíveis resultados, caso este em
> que os registros selecionados pré-selecionados são re-testados.
>
> O GIN, por sua vez não se baseia em hash, se baseia em B-tree e
> permite voce implementar metodos de acesso para buscar dados dentro de
> uma estrutura composta. Pense num JSON, algo como '{ "nome": "Joao"
> }', considere-o uma estrutura complexa e imagina como selecionar todas
> as linhas de uma tabela cujo um determinado campo do tipo JSON contem
> uma chave chamada 'nome' cujo conteudo é "Joao". Isto é muito
> diferente do que procurar por Joao com um LIKE, do tipo "campo_json
> LIKE '%Joao%'" e é importante que, se voce tem uma estrutura definida
> em um tipo composto, e tem operadores bem definidos que permitem voce
> fazer comparações nestes tipos, use-os para o bem da humanidade.
>
> Enfim, paro por aqui porque posso estar mentindo demais e afinal era
> para ser apenas um resumo.
>
> []s
> --
> Dickson S. Guedes
> mail/xmpp: [email protected] <javascript:;> - skype: guediz
> http://github.com/guedes - http://guedesoft.net
> http://www.postgresql.org.br
> _______________________________________________
> pgbr-geral mailing list
> [email protected] <javascript:;>
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



-- 
T.'.A.'.F.'.,
*Gerdan Rezende dos Santos *
*Po*stgreSQL & EnterpriseDB Specialist, Support, Training & Services
+55 (61) 9645-1525
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a