Re: GroupAggregate and Integer Arrays

Поиск
Список
Период
Сортировка
От Jeff Janes
Тема Re: GroupAggregate and Integer Arrays
Дата
Msg-id CAMkU=1w7ErQdW+EP3gF4DqF8eWU-h=ayZKkE4KW0yHrg3wanjQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: GroupAggregate and Integer Arrays  (David Osborne <david@qcode.co.uk>)
Ответы Re: GroupAggregate and Integer Arrays  (Marc Mamin <M.Mamin@intershop.de>)
Список pgsql-performance
On Fri, Oct 23, 2015 at 9:26 AM, David Osborne <david@qcode.co.uk> wrote:
> Ah yes sorry:
>
> I think these cover it...
>
> CREATE AGGREGATE sum (
>       sfunc = array_add,
>       basetype = INTEGER[],
>       stype = INTEGER[],
>       initcond = '{}'
>    );
>
> CREATE OR REPLACE FUNCTION array_add(int[],int[]) RETURNS int[] AS $$
>    -- Add two arrays.
>    select
>       ARRAY (
>          SELECT coalesce($1[i],0) + coalesce($2[i],0)
>          FROM (
>             select generate_series(least(array_lower($1, 1),array_lower($2,
> 1)), greatest(array_upper($1, 1),array_upper($2, 1)), 1) AS i
>          ) sub
>    GROUP BY i
>    ORDER BY i
>    );
> $$ LANGUAGE sql STRICT IMMUTABLE;

You are paying a lot for the convenience of using a sql language
function here.  If you want much better performance, you would
probably have to rewrite it into C.  But that would be a drag, and I
would try just throwing more CPU at it first.

Cheers,

Jeff


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

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: Recursive query performance issue
Следующее
От: Marc Mamin
Дата:
Сообщение: Re: GroupAggregate and Integer Arrays