enforcing a plan - Mailing list pgsql-hackers

From Hicham G. Elmongui
Subject enforcing a plan
Date
Msg-id 200502100325.j1A3PKBR025583@newman.cs.purdue.edu
Whole thread Raw
List pgsql-hackers
I am doing an experiment in which I need the following:

SET enable_mergejoin = false;
SET enable_hashjoin = false;

SELECT ...
FROM tab00 as T00, tab01 as T01, tab02 as T02, tab03 as T03 
WHERE T00.id = T01.id 
AND T00.id = T02.id 
AND T00.id = T03.id 
LIMIT 51;

There's an index on each primary key (id). Hence, what I expect and what I
get is the following:

Limit (cost=0.00..913.95 rows=51 width=12) -> Nested Loop (cost=0.00..89620.80 rows=5001 width=12)   -> Nested Loop
(cost=0.00..59725.19rows=5001 width=18)     -> Nested Loop  (cost=0.00..29917.10 rows=5001 width=12)       -> Seq Scan
ontab00 t00  (cost=0.00..109.01 rows=5001 width=6)       -> Index Scan using tab03_pkey on tab03 t03
(cost=0.00..5.95rows=1 width=6)               Index Cond: ("outer".id = t03.id)     -> Index Scan using tab01_pkey on
tab01t01               (cost=0.00..5.95 rows=1 width=6)             Index Cond: ("outer".id = t01.id)   -> Index Scan
usingtab02_pkey on tab02 t02             (cost=0.00..5.95 rows=1 width=6)           Index Cond: (t02.id = "outer".id)
 


I need the sequential scan to be on tab02 instead. What to do? The 4 tables
have the same schema. The data distribution is the same for the 4 tables,
except for one of them (tab02); the rows are clustered in reversed order.

Even if I try to swap the data between tab00 and tab02, I get the same
logical query: the sequential scan on the unwanted table.

Is there a way o enforce a plan definition?

Thanks,
--h



pgsql-hackers by date:

Previous
From: David Fetter
Date:
Subject: Re: Query optimizer 8.0.1 (and 8.0)
Next
From: "Ing. Jhon Carrillo"
Date:
Subject: Function .. AS..?