From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | Gunnar Wolf <gwolf(at)gwolf(dot)org> |
Cc: | PostgreSQL Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>, Víctor Gonzalez Quiroga <masterquiroga(at)ciencias(dot)unam(dot)mx> |
Subject: | Re: Encontrar una manera menos intensiva de hacer una consulta |
Date: | 2017-03-14 19:07:35 |
Message-ID: | 20170314190735.truwdpyl4tyrvlbr@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gunnar Wolf escribió:
> > Me parece que esta vista
> > está "perdiendo datos", y más bien lo que quisieras es el conjunto de
> > todos los keyid de un mismo email:
> >
> > SELECT array_agg(keyid) FROM pubkey_metadata GROUP BY email;
> >
> > Y a continuación puedes extraer toda la info de cada llave en cada uno
> > de esos arrays; (te construiría un ejemplo pero seguro que me equivoco,
> > sin tener datos de prueba a mano).
>
> ¡Genial! No se nos había ocurrido utilizar arreglos. Esto nos facilita
> fuertemente el análisis, y nos reduce la consulta de los treintaipico
> segundos originales a quince segundos - Pero haciendo pequeños
> filtrados, baja rápida y sensiblemente \o/
>
> Creo que con esto podemos seguir trabajando. ¡A estudiar funciones
> sobre arreglos!
Creo que lo que más te puede ayudar en este caso es "scalar op array
expression", donde tienes un valor escalar, un operador, y un array.
No sé si hay más casos que estos dos:
escalar = ANY (array)
escalar <> ALL (array)
el operador puede ser cualquier cosa, no solo = o <>;
el escalar puede ser una columna de una tabla.
La primera retorna TRUE si cualquier elemento del array es igual al
escalar. La segunda retorna TRUE si todos los elementos del array son
<> al escalar.
El "scalar op array expr" es un caso específicamente optimizado --
particularmente con btrees.
¡Saludos!
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Gunnar Wolf | 2017-03-14 19:58:43 | Re: Encontrar una manera menos intensiva de hacer una consulta |
Previous Message | Gunnar Wolf | 2017-03-14 18:54:33 | Re: Encontrar una manera menos intensiva de hacer una consulta |