Thread: Forcing use of specific index
Is it any way to attempt to force the planner to use some specific index while creating the plan? Other than eventually dropping all the other indices (which is obiously not a solution in production setting anyway)? I have one case where I have added 16 indices to a table, many of them beeing partial indices. The table itself has only 50k of rows, but are frequently used in heavy joins. I imagine there can be exponential order on the number of alternative paths the planner must examinate as function of the number of indices? It seems to me that the planner is quite often not choosing the "best" index, so I wonder if there is any easy way for me to check out what the planner think about a specific index :-) -- Tobias Brox, Beijing
A pretty awful way is to mangle the sql statement so the other field logical statements are like so: select * from mytable where 0+field = 100 Tobias Brox wrote: > Is it any way to attempt to force the planner to use some specific index > while creating the plan? Other than eventually dropping all the other > indices (which is obiously not a solution in production setting anyway)? > > I have one case where I have added 16 indices to a table, many of them > beeing partial indices. The table itself has only 50k of rows, but are > frequently used in heavy joins. I imagine there can be exponential order on > the number of alternative paths the planner must examinate as function of > the number of indices? > > It seems to me that the planner is quite often not choosing the "best" > index, so I wonder if there is any easy way for me to check out what the > planner think about a specific index :-) >
HI all, I also would like to know if there is a way to force a use of a specific index for a specific query. I am currently using Postgresql 7.4.6 In my case I have a relatively big table (several millions of records) that are frequently used to join with other tables (explicit join or through view). The table has several indices, some are single column and some are multi column. Some queries are faster if using single colum index while other are faster using multi column indexes. I have play around with SET STATISTICS, but it doesn't seem to make any differences (I tried to set it to 1000 one time, but still the same). I did analyze and vacuum after SET STATISTICS. Any pointer on how to do this is greatly appreciated. Thank you in advance, J On 6/1/05, Tobias Brox <tobias@nordicbet.com> wrote: > Is it any way to attempt to force the planner to use some specific index > while creating the plan? Other than eventually dropping all the other > indices (which is obiously not a solution in production setting anyway)? > > I have one case where I have added 16 indices to a table, many of them > beeing partial indices. The table itself has only 50k of rows, but are > frequently used in heavy joins. I imagine there can be exponential order on > the number of alternative paths the planner must examinate as function of > the number of indices? > > It seems to me that the planner is quite often not choosing the "best" > index, so I wonder if there is any easy way for me to check out what the > planner think about a specific index :-) > > -- > Tobias Brox, Beijing > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org >
"Tobias Brox" <tobias@nordicbet.com> writes > Is it any way to attempt to force the planner to use some specific index > while creating the plan? Other than eventually dropping all the other > indices (which is obiously not a solution in production setting anyway)? > I don't think currently PG supports this but "SQL hints" is planned ... Regards, Qingqing