2015-01-07 16:32 GMT-02:00 Sebastian Webber <sebastian...@gmail.com>:

> -- workaround starts
> DROP SEQUENCE IF EXISTS temp_seq;
> CREATE TEMP sequence temp_seq;
> -- workaround ends
>
> WITH items_parafiltrar as (
> SELECT UNNEST(ARRAY[1,5,20,12]) AS filtro
> ), lista as (
> SELECT nextval('temp_seq') As row_number, items_parafiltrar.filtro as item
> FROM items_parafiltrar
> )
> SELECT foo.id, foo.name , lista.row_number FROM foo, lista
> where foo.id = lista.item
> order by lista.row_number;
>


Nossa cara, desculpe, mas por favor não faça isso. Criar uma "sequence"
(mesmo temporária) para ter algo que uma simples WINDOW FUNCTION row_number
(o mesmo do seu "alias") já faz, me parece péssimo, além disso para array o
generate_subscripts já resolve, você viu a solução que eu propus?

De qualquer forma a ideia de um JOIN com o resultado do unnest pode não ser
ruim, mas seria interessante testar bem a diferença de performance desse
método, sei que para grandes listas isso pode ser melhor que usar IN, mas é
difícil determinar o que é "grande".

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a