Re: estimates for nested loop very wrong?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: estimates for nested loop very wrong?
Дата
Msg-id 3742.1049984229@sss.pgh.pa.us
обсуждение исходный текст
Ответ на estimates for nested loop very wrong?  (joostje@komputilo.org)
Ответы Re: estimates for nested loop very wrong?  (joostje@komputilo.org)
Список pgsql-sql
joostje@komputilo.org writes:
> When JOINing two tabels (one with 23 entries, one with 2.5e6 entries),
> psql estimates the cost of the nested loop method way to high, causing
> it to use Hash Join, even though Hash Join actually takes 30 seconds,
> agianst 0.020 seconds for Nested Loop.

Have you done an ANALYZE or VACUUM ANALYZE recently?

> Nested Loop  (cost=0.00..208256.60 rows=61140 width=38) (actual time=0.92..18.49 rows=756 loops=1)
>   ->  Seq Scan on tmp1  (cost=0.00..1.23 rows=23 width=7) (actual time=0.24..0.39 rows=23 loops=1)
>   ->  Index Scan using db_id_idx on db  (cost=0.00..9021.35 rows=2658 width=31) (actual time=0.32..0.69 rows=33
loops=23)
> Total runtime: 19.20 msec

The planner is evidently estimating that each row of tmp1 will match 2600+
rows of db, whereas in reality there is only one match.  Rather than
mess with enable_hashjoin, you need to find out why that estimate is so
badly off.  Are the entries in tmp1 specially selected to correspond to
unique rows of db?
        regards, tom lane



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

Предыдущее
От: Stephan Szabo
Дата:
Сообщение: Re: estimates for nested loop very wrong?
Следующее
От: Ian Barwick
Дата:
Сообщение: INSERT INTO ... SELECT (PostgreSQL vs. MySQL)