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