From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | Diego <diegodaf(at)gmail(dot)com> |
Cc: | Carlos Edward Grajales Marmolejo <cgrajales(at)colombiasoftware(dot)net>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Tamaño de Query |
Date: | 2018-10-30 20:07:20 |
Message-ID: | 20181030200720.w23ysq52rdykqfba@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Diego escribió:
> En estos días, a raíz de un tema con hibernate, implemente un log_statement
> en all y empece a reportar consultas con 50 campos o mas (saltaron algunas
> con 1200, y 50 joins) y no es que postgres no lo soportaba, sino que
> tardaba 90 segs en contestar. Estas consultas median entre 80 y 100 mil
> caracteres porque en el select venian enumerados todos los campos (podría
> haber sido un * y listo)
Bueno, no es lo mismo un * que una lista de campos. De hecho se
recomienda NO usar * en consultas, porque puede resultar en sorpresas
desagradables si más adelante llegas a cambiar el diseño de las tablas.
Aunque si la consulta es escrita automáticamente por un ORM, lo más
seguro es que liste todas las columnas. Ahí el problema no es ni el ORM
ni la base de datos, ni el problema tampoco es el rendimiento; el
problema es que el ORM amplifica exponencialmente la estupidez (o
debería decir más educadamente "ignorancia") de quien escribe la
aplicación.
No creo que el problema sea la longitud de la lista de campos a retornar
(de hecho debe tener muy poco impacto), sino más bien la cantidad de
tablas listadas en el FROM, porque el tiempo de optimización crece según
el factorial de ese número (ver: from_collapse_limit,
join_collapse_limit) ... pero el optimizador genético se hará cargo de
encontrar un plan de ejecución no-tan-malo en tiempo no-tan-largo cuando
la cantidad de tablas excede límites razonables.
> Entonces, ya yendo para el lado de postgres, ¿que tanto impacto tengo que
> esperar por una consulta de este tamaño?
Si no está roto, no es necesario arreglarlo ;-)
Deberías empezar por mandar a un curso de SQL a quien haya escrito esa
parte de la aplicación.
Saludos
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Jose R. Prieto | 2018-10-30 20:12:00 | Re: Tamaño de Query |
Previous Message | Alvaro Herrera | 2018-10-30 19:58:34 | Re: Tamaño de Query |