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@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a