Hola estimados,
mis disculpas por no contestar con anterioridad, estuve un poco enfermo
y hoy recién he regresado a mis labores.
Antes de cargar la base de datos con los miles de registros había
desactivado autovacum y no le había hecho un analyze a la tabla tal como
sugirió Jaime.
Hoy se ha hecho el ANALYZE y la verdad es que los resultados han
mejorado muchísimo, por lo cual ya hemos quedado satisfechos con los
resultados de las consultas.
Muchas gracias a todos.
El 26/04/2013 0:23, Alvaro Herrera escribió:
Jaime Casanova escribió:
2013/4/25 Alvaro Herrera <[email protected]>:
Rodrigo Ruiz escribió:
El 25/04/2013 16:03, Alvaro Herrera escribió:
Hola Alvaro,
el explain analyze de la consulta arrojó lo siguiente:
"Index Scan using persona_fecha_nacimiento_idx on persona
(cost=0.01..9.68 rows=1 width=835) (actual time=0.097..102908.235
rows=699498 loops=1)"
" Index Cond: ((fecha_nacimiento >= (('now'::text)::date - '35
years'::interval)) AND (fecha_nacimiento <= (('now'::text)::date -
'25 years'::interval)))"
"Total runtime: 103004.026 ms"
Es curioso que use un indexscan en este caso; probablemente debería
estar usando un seqscan, o cuando mucho un bitmap scan. ¿No tendrás
enable_seqscan=off? ¿O quizás tienes otros parámetros del optimizador
puestos en valores inusuales?
Lo que realmente me llama la atención es que los registros estimados
dice 1 que es completamente distinto a los 699498 que finalmente
retorno.
Ah! No lo había visto. Quizás por eso usa un indexscan ...
Inicialmente te diré que ejecutes ANALYZE sobre esa tabla,
+1
--
Rodrigo Ruiz Fuentes
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda