Re: Encontrar una manera menos intensiva de hacer una consulta

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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