Re: Tamaño de Query

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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