Aggregating tsqueries

Поиск
Список
Период
Сортировка
От Alexander Hill
Тема Aggregating tsqueries
Дата
Msg-id CA+KBOKxv7HOcc=VXpcLZWX=s8=2dFpgOZcFOQC9iY-L60VhB4w@mail.gmail.com
обсуждение исходный текст
Ответы Re: Aggregating tsqueries  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Список pgsql-performance
Hello,

I have a table of tree nodes with a tsquery column. To get a subtree's tsquery, I need to OR all of its nodes' tsqueries together.

I defined a custom aggregate using tsquery_or:

    CREATE AGGREGATE tsquery_or_agg (tsquery)
    (
        sfunc = tsquery_or,
        stype = tsquery
    );

but I've found that

    tsquery_or_agg(query)

is about a hundred times slower than this:

    ('(' || string_agg(query::text, ')|(') || ')')::tsquery

That works perfectly so I'm happy to continue doing it, but I'm curious to know why the difference is so great and if anything can be done about it?

Cheers,
Alex

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

Предыдущее
От: Josh Berkus
Дата:
Сообщение: Yet another abort-early plan disaster on 9.3
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: Aggregating tsqueries