Re: Consulta sobre Split

From: "Mario Sileone (GM)" <msileone(at)gmail(dot)com>
To: Hellmuth Vargas <hivs77(at)gmail(dot)com>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta sobre Split
Date: 2017-03-21 01:49:17
Message-ID: 8f55f403-f569-955a-1c6d-597a18bb1704@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias Hellmuh es exactamente lo que me sucede.

Saludos!

El 20/03/2017 a las 22:44, Hellmuth Vargas escribió:
> Hola Mario
>
> Creo que tiene la misma situación que yo, le reenvío la respuesta en
> mi caso
>
>
>
>
> ---------- Mensaje reenviado ----------
> De: "Hellmuth Vargas" <hivs77(at)gmail(dot)com <mailto:hivs77(at)gmail(dot)com>>
> Fecha: 8 mar. 2017 3:27 PM
> Asunto: Re: [pgsql-es-ayuda] no aplica constraint_exclusion con
> concadenacion de parametros
> Para: "Jaime Casanova" <jaime(dot)casanova(at)2ndquadrant(dot)com
> <mailto:jaime(dot)casanova(at)2ndquadrant(dot)com>>
> Cc: "Lista Postgres ES" <pgsql-es-ayuda(at)postgresql(dot)org
> <mailto:pgsql-es-ayuda(at)postgresql(dot)org>>
>
> Hola Jaime
>
> Muchas gracias por la respuesta.... Pues esta tabla se emplea en
> muchas consultas (reportes) con diferentes joins y condiciones,
> por lo tanto no seria factible una función, voy a ver que podemos
> hacer desde jasper para enviar la fecha como una constante
>
> El 7 de marzo de 2017, 19:35, Jaime
> Casanova<jaime(dot)casanova(at)2ndquadrant(dot)com
> <mailto:jaime(dot)casanova(at)2ndquadrant(dot)com>> escribió:
>
> On 7 March 2017 at 18:02, Hellmuth Vargas <hivs77(at)gmail(dot)com
> <mailto:hivs77(at)gmail(dot)com>> wrote:
> >
> > Tengo un servidor PostgreSQL 9.6 en le cual implemente
> particionamiento (por
> > fecha) sobre una tabla, pues sobre esta tabla se generan
> reportes mensuales
> > de gran cantidad de registros, ajuste el parámetro
> constraint_exclusion = on
> > para qeu excluyera las tablas que no estan en le rango, Hice
> una prueba y
> > funciona como se espera:
> >
> [...]
> >
> > Pero si cambio el formato de la fechas (porque realmente
> esta consulta esta
> > dentro de un jasper y las fechas son parámetros y por lo
> tanto se
> > concadenan):
> >
>
> Esto funciona así desde siempre y la explicación es que postgres
> decide que particiones leer antes de llegar al executor (no
> recuerdo
> si en tiempo de parsing o planning, creería que en el segundo).
>
> Debido a que la consulta aun no empieza a ejecutarse (porque eso
> ocurre, obviamente, en el executor) postgres no ha resuelto
> funciones
> ni expresiones y por lo tanto no puede decidir eliminar
> particiones
> basándose en eso.
>
> La condición para que excluya particiones *tiene* que ser una
> constante. La única solución real, si es que no puedes enviar
> la fecha
> armada, es que escondas la consulta en una función almacenada
> usando
> SQL dinamico y concatenes lo que envias como una constante
> usando algo
> parecido a una función como la que te pongo de ejemplo (la
> cual tiene
> cabos sueltos):
>
>
> CREATE OR REPLACE FUNCTION consulta_dinamica(v_fecha_i text,
> v_hora_i
> text, v_fecha_f text, v_hora_f text)
> RETURNS algo AS
> $$
> begin
> EXECUTE 'SELECT q.evento,count(*)
> FROM queue_log q
> WHERE q.fecha BETWEEN cast(' ||
> v_fecha_i || '
> ' || v_hora_i || ' as timestamp )
> AND cast('
> || v_fecha_f || ' ' || v_hora_f || ' as timestamp )
> GROUP BY 1';
> end;
> $$
> LANGUAGE 'plpgsql';
>
>
> --
> Jaime Casanova www.2ndQuadrant.com <http://www.2ndQuadrant.com>
> PostgreSQL Development, 24x7 Support, Remote DBA, Training &
> Services
>
>
>
>
> --
> Cordialmente,
>
> Ing. Hellmuth I. Vargas S.
>
>
>
> ---------- Mensaje reenviado ----------
> De: "Mario Sileone (GM)" <msileone(at)gmail(dot)com <mailto:msileone(at)gmail(dot)com>>
> Fecha: 20 mar. 2017 6:35 PM
> Asunto: [pgsql-es-ayuda] Consulta sobre Split
> Para: "pgsql-es-ayuda" <pgsql-es-ayuda(at)postgresql(dot)org
> <mailto:pgsql-es-ayuda(at)postgresql(dot)org>>
> Cc:
>
> Estimados, buenas noches.
>
> Tengo una consulta respecto a las tablas divididas. Tenemos
> una división en tablas que tienen millones de registros diarios,
> en tablas heredadas mensuales.
>
> Todo funciona de maravillas, salvo que, hemos notado que las
> consultas con variables (between now() - interval '8 hours' AND
> now()) no hacen caso y busca en todas las tablas heredadas.
>
> Lo vimos en un explain con las variables y luego uno con las
> fechas literales.
>
> La pregunta es, al margen que tenemos la solución mediante código,
> si existe algun método o quizás un quote_literal que transforme la
> consulta a literal o alguna manera para que el postgres la
> interprete como tal.
>
> Desde ya muchas gracias!
>
> Saludos
>
>
>
> -
> Enviado a la lista de correo pgsql-es-ayuda
> (pgsql-es-ayuda(at)postgresql(dot)org <mailto:pgsql-es-ayuda(at)postgresql(dot)org>)
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
> <http://www.postgresql.org/mailpref/pgsql-es-ayuda>
>
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Francisco Olarte 2017-03-21 12:48:00 Re: Consulta sobre Split
Previous Message Hellmuth Vargas 2017-03-21 01:44:03 Re: Consulta sobre Split