Re: Diferencia entre indices btree, rtree y hash

From: Luis Fernando Curiel Cabrera <lcuriel(at)gmail(dot)com>
To: Silvio Quadri <silvioq(at)gmail(dot)com>
Cc: BhEaN <listas(at)bhean(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Diferencia entre indices btree, rtree y hash
Date: 2009-05-19 16:15:13
Message-ID: 4fa3ceed0905190915q6a002e61q99c7b781d19f7529@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Yo quiero adentrarme en este tema, lo conozco pero no suficiente. Yo les
pido ayuda de donde puedo encontrar documentación o me recomienden algún
libro que aborde el tema de los indices para implementarlos de forma
correcta y optima.

2009/5/19 Silvio Quadri <silvioq(at)gmail(dot)com>

> El día 19 de mayo de 2009 7:08, BhEaN <listas(at)bhean(dot)com> escribió:
> > Antes de nada, muchísimas gracias a todos por vuestras respuestas....
> >
> > Os contesto debajo de cada parrafo:
> >>
> >> rtree ya no existe. Fue reemplazado por GiST ("generalized search
> >> tree"), el cual es un sistema de indexamiento para tipos complicados --
> >> por ej. se usa para indexar tipos geométricos y también para los índices
> >> de búsqueda en texto, entre muchas otras cosas.
> >>
> >
> > Eso es lo que necesito, un índice de búsqueda en texto...
> >>
> >> El otro sistema de indexamiento extravagante es GIN; es un índice
> >> invertido. También se usa para búsqueda en texto (es más rápido en
> >> búsquedas que GiST, pero mucho más lento para agregar nuevos valores).
> >> Se puede usar para otras cosas también obviamente.
> >>
> >
> > Eso suena mejor que GiST, puesto que la relación de inserciones/lecturas
> > será muy baja... se haran muchísimas más consultas que inserciones, por
> lo
> > que quizás me interese más éste tipo de indice...
> >>
> >> Hash es un tipo de índice que en Postgres no es recomendable por el
> >> momento, así que no lo uses porque tiene varios problemas.
> >>
> >> Así que tu única alternativa es el btree. Dado que no puedes almacenar
> >> más de 2000 y pico caracteres, vas a tener que buscar mecanismos
> >> alternativos. Si quieres indexar campos grandes de texto, ¿quizás lo
> que
> >> necesitas en realidad es usar el sistema de búsqueda en texto? Te
> >> podemos dar consejos más específicos si nos dices exactamente de qué
> >> naturaleza son los datos y cómo serán las consultas.
> >>
> >>
> >
> > Ok... siento no haber sido más explícito... lo que tengo exactamente es
> una
> > tabla con muchos anuncios clasificados (los típicos anuncios de "vendo
> > blablabla", o "compro blablablablabla"... hay varios millones de éstos
> > anuncios.... y lo que necesito es optimizar todo lo posible las búsquedas
> en
> > ella, ya que debo permitir búsquedas de palabras en el texto y título de
> > dichos anuncios... es decir, búsquedas del tipo LIKE '%blablabla%' (lo
> cual
> > tiene pinta de que va a ser horrible para la BBDD, pero es lo que hay,
> > jejejee...). No dispongo aún de los datos "reales", por lo que no puedo
> > hacer pruebas de rendimiento con un índice u otro, sino... simplemente
> > "probaría" a hacer búsquedas con un tipo de índice... luego con otro... y
> > así hasta dar con el más optimo, pero no los tengo aún, así que tengo que
> > preparar el tema un poco "a ciegas".
>
>
> Like '%blablabla%' no va a usar un índice tradicional. Revisá la
> documentación acerca de "full text search"
> (http://www.postgresql.org/docs/8.3/static/textsearch.html) que te va
> a servir de ayuda.
> Saludos!
>
>
> Silvio
>
> --
> Silvio Quadri
> --
> TIP 8: explain analyze es tu amigo
>

--
Luis Fernando Curiel Cabrera
- Professional ABACO DE BOLITAS Developer.
- Certified ABACO DE BOLITAS Programmer.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Mendez 2009-05-19 16:33:57 No se inicia pgsql
Previous Message Ernesto Lozano 2009-05-19 16:08:24 Re: Implementar Servidor en WinXP?