Received: from sss.pgh.pa.us ([192.204.191.242]) by postgresql.org (8.11.3/8.11.4) with ESMTP id g09FEIB09428 for ; Wed, 9 Jan 2002 10:14:18 -0500 (EST) (envelope-from tgl@sss.pgh.pa.us) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g09FE5g07238; Wed, 9 Jan 2002 10:14:05 -0500 (EST) To: Daniel Kalchev cc: pgsql-hackers@postgresql.org Subject: Re: again on index usage In-reply-to: <200201090745.JAA15141@dcave.digsys.bg> References: <200201090745.JAA15141@dcave.digsys.bg> Comments: In-reply-to Daniel Kalchev message dated "Wed, 09 Jan 2002 09:45:51 +0200" Date: Wed, 09 Jan 2002 10:14:05 -0500 Message-ID: <7235.1010589245@sss.pgh.pa.us> From: Tom Lane X-Archive-Number: 200201/387 X-Sequence-Number: 17426 Daniel Kalchev writes: > Aggregate (cost=47721.72..47721.72 rows=1 width=8) > -> Seq Scan on iplog_gate200112 (cost=0.00..47579.54 rows=56873 width= > 8) >>> > If you say "set enable_seqscan to off", does that change the plan? >>> > Aggregate (cost=100359.71..100359.71 rows=1 width=8) > -> Index Scan using iplog_gate200112_ipdate_idx on iplog_gate200112 > (cost=0.00..100217.52 rows=56873 width=8) >>> >>> So, what we've got here is a difference of opinion: the planner thinks >>> that the seqscan will be faster. How many rows are actually selected >>> by this WHERE clause? How long does each plan actually take? > 3-5 minutes with sequential scan; 10-15 sec with index scan. The query returns > 4062 rows. Out of ca 1700000 rows. > With only the datetime constraints (which relates to the index), the number of > rows is 51764. Hm. Okay, so the number-of-rows estimate is not too far off. I concur with Hiroshi's comment: the reason the indexscan is so fast must be that the table is clustered (physical order largely agrees with index order). This would obviously hold if the records were entered in order by ipdate; is that true? The 7.2 planner does try to estimate index order correlation, and would be likely to price this indexscan much lower, so that it would make the right choice. I'd suggest updating to 7.2 as soon as we have RC1 out. (Don't do it yet, though, since we've got some timestamp bugs to fix that are probably going to require another initdb.) > In any case, sequential scan of millions of rows cannot be faster than index > scan. Snort. If that were true, we could get rid of most of the complexity in the planner. regards, tom lane