Re: Inconsistant use of index.

Поиск
Список
Период
Сортировка
От Michael G. Martin
Тема Re: Inconsistant use of index.
Дата
Msg-id 3CA0B982.2050503@vpmonline.com
обсуждение исходный текст
Ответ на Inconsistant use of index.  (Ron Mayer <ron@intervideo.com>)
Список pgsql-bugs
I had an issue where my index was not always used on a very large table.
 The issue came down to the data distribution and not pulling in enough
of a random sample to get an accurate estimate ( I think the default max
value was around 3000 sample rows ( 300 * 10 default_samples -- see
analyze.c ) rows.  I fixed the issue by following Tom's advice and
increased the statistics count on my table to pull in 300000 rows (1000
samples *300).  I had to play with the value, re-analyze, and check the
stats in the pg_stats table until most_common_freqs on some values were
all fairily close.  The explain plan still shows me a cost and row value
way above what is physically in the table, but at least my indexes were
being used.

alter table table_name alter symbol_name set statistics 1000;

--Michael


Tom Lane wrote:

>Ron Mayer <ron@intervideo.com> writes:
>
>>  Once some of my tables started getting pretty large, PostgreSQL
>>suddenly stopped using indexes when I use expressions like "col = value"
>>decreasing performance by 20X.
>>
>
>Hmm.  The EXPLAIN shows that the planner is not doing too badly at
>estimating the number of rows involved:
>
>>logs2=# explain analyze select count(*) from fact where dat='2002-03-01';
>>NOTICE:  QUERY PLAN:
>>
>
>>Aggregate  (cost=375631.14..375631.14 rows=1 width=0) (actual
>>time=76689.42..76689.42 rows=1 loops=1)
>>  ->  Seq Scan on fact  (cost=0.00..375101.72 rows=211765 width=0) (actual
>>time=20330.96..76391.94 rows=180295 loops=1)
>>Total runtime: 76707.92 msec
>>
>
>212K estimate for 180K real is not bad at all.  So the problem is in the
>cost models not the initial row count estimation.
>
>If you force an indexscan via "set enable_seqscan to off", what does
>EXPLAIN ANALYZE report?
>
>Also, what do you get from
>    select * from pg_stats where tablename = 'fact';
>I'm particularly interested in the correlation estimate for the dat
>column.  (Would you happen to have an idea whether the data has been
>inserted more-or-less in dat order?)
>
>            regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 3: if posting/reading through Usenet, please send an appropriate
>subscribe-nomail command to majordomo@postgresql.org so that your
>message can get through to the mailing list cleanly
>

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

Предыдущее
От: Ron Mayer
Дата:
Сообщение: Re: Inconsistant use of index.
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Inconsistant use of index.