On Tue, 2006-01-24 at 17:15, Daniel Gish wrote: > Hi, > We are running Postgresql 8.1, and getting dramatically inconsistant results > after running VACUUM ANALYZE. Sometimes after analyzing the database, the > query planner chooses a very efficient plan (15 rows, 4.744 ms), and > sometimes a terrible one (24 rows, 3536.995 ms). Here's the abbreviated > query: > > SELECT * FROM t1 INNER JOIN (t2 INNER JOIN (t3 INNER JOIN t4 ON t3.gid = > t4.gid) ON t3.gid = t2.gid) ON t2.eid = t1.eid WHERE ... > > In the efficient plan, t2 is joined to t3 & t4 before being joined to t1. > The inefficient plan joins t1 to t2 before joining to the other tables. > > We've experimented with different settings, such as shared_buffers & > max_fsm_pages, to no avail. Anybody have a suggestion for getting the > efficient plan to execute consistantly? If you'd like to see the actual > query & query plans let me know. Have you adjusted the stats target for that column? See \h alter table in psql for the syntax for that. Then run analyze again.