El 26 de agosto de 2009 23:28, Sebastian Machuca<serr...@gmail.com> escribió: > > Este es un ejemplo. Se que son solo 2, porque estoy en entorno de > desarrollo, en producción, el orden es de al menos unos 30.000 números > distintos, en una tabla de unos 3.000.000 de registros. >
Entonces, no podés hacer calculos de este tipo en un ambiente de desarrollo. En especial si no contas con un set de datos real o al menos aproximado. > Por eso pense que un indice debería ayudar en mi problema. O sea, cuando lo > hago sobre las tablas de produccion, los tiempos son de muchos segundo, y el > tener un indice mejora en por lo menos un 50% el tiempo de consulta. Pero de > todos modos, no me convence el tiempo de respuesta. > Tenés que tocar la configuración del servidor, además de tener otro tipo de técnicas para mejorar el rendimiento. Pasanos los valores del postgresql.conf de work_mem, shared_buffers, effective_cache_size, también de la WAL que pr lo visto hace uso intensivo. Además de los parámetros del kernel del SO > La base tiene un crecimiento de unos 30.000 registros por hora en sus > momentos peaks, por lo tanto manter las estadisticas actualizadas, > sobrecargaria el sistema innecesariamente creo yo. > Por que no solo es crecimiento, tiene mucha actividad de tipo batch. (cada > 15 minutos corren scripts de actualizacion de informacion) > Tenés RAID? Que tipo? Como están las estadisticas de I/O desde el sistema operativo? >> Yo lo haria de una manera más radical... >> select unnest(most_common_vals::text::int[]) from pg_stats where >> tablename ~ 'tx8'; >> respecto a esto, en 8.3 tendrias que utilizar replace(regexp_split_to_table(most_common_vals::text,',')::text,'({|})','') no lo probé pero puede ser util. -- Emanuel Calvo Franco DBA at: www.siu.edu.ar www.emanuelcalvofranco.com.ar -- TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda