Hi all, If you can just help my understanding the choice of the planner. Here is the Query: explain analyse SELECT IRNUM FROM IR INNER JOIN IT ON IT.ITIRNUM = ANY ('{1000, 2000}') AND IT.ITYPNUM = 'M' AND IR.IRYPNUM = IT.ITYPNUM AND IR.IRNUM = IT.ITIRNUM WHERE IRNUM = ANY ('{1000, 2000}') and IRYPNUM = 'M' Here is the Query plan:
I don't understand why the planner do a Seq Scan (Seq Scan on table IT ..) instead of passing by the followin index: ALTER TABLE IT ADD CONSTRAINT IT_IR_FK foreign key (ITYPNUM,ITIRNUM) references IR (IRYPNUM, IRNUM) ON UPDATE CASCADE; I tried some stuff but I'm not able to change this behavior. The IT and IR table may be quite huge (from 20k to 1600k rows) so I think doing a SEQ SCAN is not a good idea.. am I wrong? Is this query plan is oki for you ? Thanks for your help. /David P.S.: I'm using postgresql 8.0.3 on windows and I change those setting in my postgresql.conf : shared_buffers = 12000 # min 16, at least max_connections*2, 8KB each work_mem = 15000 # min 64, size in KB |
- [PERFORM] Why the planner is not using the INDEX . David Gagnon
- Re: [PERFORM] Why the planner is not using th... Stephan Szabo
- Re: [PERFORM] Why the planner is not usin... David Gagnon
- Re: [PERFORM] Why the planner is not ... Christopher Kings-Lynne
- Re: [PERFORM] Why the planner is not ... Bruno Wolff III
- Re: [PERFORM] Why the planner is not ... Stephan Szabo
- Re: [PERFORM] Why the planner is not using th... Tom Lane
- Re: [PERFORM] Why the planner is not usin... David Gagnon
- Re: [PERFORM] Why the planner is not ... Enrico Weigelt