• Tom Lane's avatar
    Improve procost estimates for some text search functions. · 2503982b
    Tom Lane authored
    The text search functions that involve parsing raw text into lexemes are
    remarkably CPU-intensive, so estimating them at the same cost as most other
    built-in functions seems like a mistake; moreover, doing so turns out to
    discourage the optimizer from using functional indexes on these functions.
    After some debate, we've agreed to raise procost from 1 to 100 for
    to_tsvector(), plainto_tsvector(), to_tsquery(), ts_headline(),
    ts_match_tt(), and ts_match_tq(), which are all the text search functions
    that parse raw text.
    
    Also increase procost for the 2-argument form of ts_rewrite()
    (tsquery_rewrite_query); while this function doesn't do text parsing,
    it does execute a user-supplied SQL query, so its previous procost of 1 is
    clearly a drastic underestimate.  It seems reasonable to assign it the same
    cost we assign to PL functions by default, so 100 is the number here too.
    
    I did not bother bumping catversion for this change, since it does not
    break catalog compatibility with the server executable nor result in
    any regression test changes.
    
    Per complaint from Andrew Gierth and subsequent discussion.
    2503982b
pg_proc.h 531 KB