Pergunta

Pelas informações que pude encontrar, ambos resolvem os mesmos problemas - operações mais esotéricas, como contenção e interseção de array (&&, @>, <@, etc).No entanto, eu estaria interessado em conselhos sobre quando usar um ou outro (ou nenhum dos dois).
O Documentação PostgreSQL tem algumas informações sobre isso:

  • As pesquisas de índice GIN são cerca de três vezes mais rápidas que GiST
  • Os índices GIN demoram cerca de três vezes mais para serem construídos do que o GiST
  • Os índices GIN são cerca de dez vezes mais lentos para atualizar do que GiST
  • Os índices GIN são duas a três vezes maiores que GiST

No entanto, eu estaria particularmente interessado em saber se há um impacto no desempenho quando a proporção da memória para o tamanho do índice começa a ficar pequena (ou seja,o tamanho do índice se torna muito maior que a memória disponível)?Disseram-me no canal IRC #postgresql que o GIN precisa manter todo o índice na memória, caso contrário não será eficaz, porque, ao contrário do B-Tree, ele não sabe para qual parte ler do disco uma consulta específica?A questão seria:isso é verdade (porque também me disseram o contrário)?O GiST tem as mesmas restrições?Existem outras restrições que devo conhecer ao usar um desses algoritmos de indexação?

Foi útil?

Solução

Em primeiro lugar, você precisa usá-los para indexação de pesquisa de texto?GIN e GiST são índices especializados para alguns tipos de dados.Se você precisar indexar valores simples de caracteres ou inteiros, o índice B-Tree normal é o melhor.
De qualquer forma, a documentação do PostgreSQL tem um capítulo sobre ESSÊNCIA e um em GIN, onde você pode encontrar mais informações.
E, por último, mas não menos importante, a melhor maneira de descobrir qual é o melhor é gerar dados de amostra (tanto quanto for necessário para ser um cenário real) e depois criar um índice GIST, medindo quanto tempo é necessário para criar o índice, insira um novo valor, execute uma consulta de exemplo.Em seguida, elimine o índice e faça o mesmo com um índice GIN.Compare os valores e você terá a resposta que precisa, com base nos seus dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top