Gabriel Ferro escribió:
> Maestros, me conecto para pedirles un consejo. Tengo que pasar a
> postgres mas de 20 millones de personas desde varios archivos planos,
> y me salto la duda si es conveniente tener como hasta ahora una tabla
> de personas con clave tipo+numdocumento, una tabla localides y una
> tabla que relaciona ambas (por si la persona tiene varios domicilios..
> la cosa es que no estoy seguro si estar trabajando con tablas tan
> grandes sea bueno, ¿tendre que separar las personas por abecedario o
> por provincias?, ¿lo dejo asi?...  les comento que las busquedas luego
> seran com muchos LIKES, es decir que no seran simplemente por
> numdocumento

Con respecto a los LIKEs, ¿qué tipo de LIKEs van a ser?  Si separas los
nombres en sus partes lógicas (nombre, apellido paterno, apellido
materno --- supongo que funciona así en tu país; ¿hay alguno en Latam
donde no sea así?) entonces es muy posible que puedas evitar tener que
usar LIKE '%algo'

¿Por qué menciono esto?  Simple: porque un índice btree puede contestar
consultas de este tipo
WHERE apellido_pat LIKE 'fer%'
pero no puede contestar una de este otro tipo:
WHERE apellido_pat LIKE '%fer%'

Sin embargo cuando se hacen búsquedas, uno nunca busca desde la mitad
del apellido, sino siempre desde el principio.  Así que la primera forma
es suficiente, y por lo tanto con el btree es suficiente.  Y eso es bien
rápido.

En cambio si dejas el nombre completo en un solo campo, estás obligado a
poner un % al principio de la cadena de búsqueda, y eso complica mucho
las cosas.

-- 
Alvaro Herrera                               http://www.PlanetPostgreSQL.org/
"All rings of power are equal,
But some rings of power are more equal than others."
                                 (George Orwell's The Lord of the Rings)
--
TIP 1: para suscribirte y desuscribirte, visita 
http://archives.postgresql.org/pgsql-es-ayuda

Responder a