BhEaN escribió: > Hola a todos, > > Tengo una BBDD en PostgreSQL que va a contener varios millones de > registros, por lo que necesito optimizar las consultas lo máximo > posible... > > Mi problema es que, a la hora de crear los indices, no puedo crear un > indice (tipo BTREE) en una de las columnas, porque algunos de los > registros que hay en ella tienen una longitud mayor a la que permite el > indice (creo recordar que 2000 y pico... no demasiado...) > > He buscado documentación acerca de los tipos de indices existentes, pero > no me queda nada claro sus diferencias y caracteristicas. Hasta ahora > siempre había usado indices BTREE, pero nunca me habia parado a pensar > en las diferencias que tendrian estos indices con RTREE o HASH, y ahora > que me veo obligado a usar otro tipo distinto a BTREE, no se si al crear > el indice HASH (por ejemplo) las consultas serán mas lentas, o habrá > alguna penalización.... > > Podrías indicarme las caracteristicas y/o diferencias entre estos tipos > de índices de PostgreSQL, o decirme donde encontrar información CLARA al > respecto? (ya leí en la documentacion oficial, y no consigo sacar > conclusiones)
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. 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. 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. -- Alvaro Herrera http://www.advogato.org/person/alvherre "Sallah, I said NO camels! That's FIVE camels; can't you count?" (Indiana Jones) -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net