Re: unoptimized nested loops

Поиск
Список
Период
Сортировка
От David Rowley
Тема Re: unoptimized nested loops
Дата
Msg-id CAApHDvqVUpDajMa31Yq-_o4+W7frGLp+6QQD5pJXxCP1oqTOVw@mail.gmail.com
обсуждение исходный текст
Ответ на unoptimized nested loops  (Tim Kelly <gtkelly@dialectronics.com>)
Список pgsql-general
On Wed, 1 Jun 2022 at 08:04, Tim Kelly <gtkelly@dialectronics.com> wrote:
>           ->  Seq Scan on data  (cost=0.00..47132.93 rows=125 width=135)
> (actual time=0.542..182952.708 rows=1167810 loops=1)
>                 Filter: (data ~~ '%some text%'::text)

The problem is coming from the 125 row estimate in the above plan
fragment.  Because the number of estimated rows is low, the query
planner likely thinks a Nested Loop join is best.

What I'd do first is verify that some other join method is better by
running the query after having done:

SET enable_nestloop TO off;
<run query>
RESET enble_nestloop;

If the query then runs faster then it's going to be worth doing
something about trying to improve those statistics.

I see the like pattern matching selectivity estimation code does look
at histogram buckets, so you might have luck if you increase the
statistics targets on this column:

ALTER TABLE data ALTER COLUMN data SET STATISTICS 1000;
ANALYZE data;

The standard number of buckets is 100. The above will set it to 1000.
You can go as high as 10000, but going too high is going to slow down
the planner, so you should only go as high as you need to go.

David



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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: Extended multivariate statistics are ignored (potentially related to high null fraction, not sure)
Следующее
От: Jeff Janes
Дата:
Сообщение: Re: unoptimized nested loops