great!
Thanks Markus and Tom!
On Jun 30, 2006, at 10:29 AM, Markus Schaber wrote:
Hi, Joe,
Joe Lester wrote:
Aggregate (cost=22695.28..22695.28 rows=1 width=0) (actual
time=2205.688..2205.724 rows=1 loops=1)
-> Seq Scan on purchase_order_items (cost=0.00..21978.08
rows=286882
width=0) (actual time=0.535..2184.405 rows=7458 loops=1)
Filter: (expected_quantity > 0)
The query planner estimates that your filter will hit 286882 rows,
while
in reality it hits only 7458 rows. That's why the query planer
chooses a
sequential scan.
It seems that the statistics for the column expected_quantity are off.
My suggestions:
- make shure that the statistics are current by analyzing the table
appropriately (e. G. by using the autovacuum daemon from contrib).
- increase the statistics target for this column.
- if you run this query very often, an conditional index might make
sense:
CREATE INDEX purchase_order_having_quantity_idx ON
purchase_order_items
(expected_quantity) WHERE expected_quantity > 0;
HTH,
Markus
--
Markus Schaber | Logical Tracking&Tracing International AG
Dipl. Inf. | Software Development GIS
Fight against software patents in EU! www.ffii.org
www.nosoftwarepatents.org
---------------------------(end of
broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq