Re: plpgsql arrays

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: plpgsql arrays
Дата
Msg-id b42b73150904030802q1b3685br8db7740569e31aea@mail.gmail.com
обсуждение исходный текст
Ответ на plpgsql arrays  (Matthew Wakeling <matthew@flymine.org>)
Ответы Re: plpgsql arrays
Список pgsql-performance
On Fri, Apr 3, 2009 at 9:32 AM, Matthew Wakeling <matthew@flymine.org> wrote:
>  genes = '{}';
>  next_new = 1;
>  FOR loc IN SELECT location.* FROM location, gene WHERE location.subjectid =
> gene.id ORDER BY objectid, intermine_start, intermine_end LOOP
>     genes[next_new] = loc;
>     IF (next_new % 10000 = 0) THEN
>         RAISE NOTICE 'Scanned % gene locations', next_new;
>     END IF;
>     next_new = next_new + 1;
>  END LOOP;
>  genes_size = coalesce(array_upper(genes, 1), 0);
>  RAISE NOTICE 'Scanned % gene locations', genes_size;
>
> For 200,000 rows it takes 40 minutes.
>
> So, is there a way to dump the results of a query into an array quickly in
> plpgsql, or alternatively is there a way to read two results streams
> simultaneously?

try this:
select array(SELECT location.* FROM location, gene WHERE
location.subjectid = gene.id ORDER BY objectid, intermine_start,
intermine_end)) into genes;

merlin

В списке pgsql-performance по дате отправления:

Предыдущее
От: Matthew Wakeling
Дата:
Сообщение: Re: plpgsql arrays
Следующее
От: Merlin Moncure
Дата:
Сообщение: Re: plpgsql arrays