1)
attrelid | attname | attstattarget
----------+---------+---------------
g2 | gid | 100
d2 | gid | 100
(2 rows)
setting statistics too 500 works!attrelid | attname | attstattarget
----------+---------+---------------
g2 | gid | 100
d2 | gid | 100
(2 rows)
On Wed, Jun 26, 2013 at 10:46 PM, Victor Yegorov <vyegorov@xxxxxxxxx> wrote:
2013/6/26 Willy-Bas Loos <willybas@xxxxxxxxx>1) Could you show the output of the following queries, please?
here's the query, and the analyzed plan:I can reproduce it with a simplified set of the data itself though.postgres does a seqscan, even though there is an index present and it should be much more efficient to use it.I tried to synthetically reproduce it, but it won't make the same choice when i do.
select count(*)
from d2
join g2 on g2.gid=d2.gid
where g2.k=1942
select relname,relpages,reltuples::numericfrom pg_class where oid in ('d2'::regclass, 'g2'::regclass);select attrelid::regclass, attname,CASE WHEN attstattarget<0 THEN current_setting('default_statistics_target')::int4 ELSE attstattarget ENDfrom pg_attributewhere attrelid in ('d2'::regclass, 'g2'::regclass) and attname='gid';
2) Will it help running the following?:ALTER TABLE d2 ALTER gid SET STATISTICS 500;VACUUM ANALYZE d2;EXPLAIN (ANALYZE, BUFFERS) ...
SET enable_seqscan TO 'off';EXPLAIN (ANALYZE, BUFFERS) ...
--
Victor Y. Yegorov
--
"Quality comes from focus and clarity of purpose" -- Mark Shuttleworth