Re: Poor plan choice in prepared statement
От | Scott Marlowe |
---|---|
Тема | Re: Poor plan choice in prepared statement |
Дата | |
Msg-id | dcc563d10812301209i59bf612eidc42fa408d4441ab@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Poor plan choice in prepared statement ("Merlin Moncure" <mmoncure@gmail.com>) |
Ответы |
Re: Poor plan choice in prepared statement
|
Список | pgsql-performance |
On Tue, Dec 30, 2008 at 12:42 PM, Merlin Moncure <mmoncure@gmail.com> wrote: > On Tue, Dec 30, 2008 at 1:59 PM, bricklen <bricklen@gmail.com> wrote: >> Hi, I am re-posting my question here after trying to find a solution >> in the PHP pgsql list with no luck. >> >> I am experiencing some performance issues that I think are stemming >> from prepared statements. I have a pretty simple query: >> -- bad plan, from prepared statement >> -- >> dev=# prepare fooplan (date,date,int,int) as >> dev-# SELECT cl.idOffer AS campaign, cl.idAffiliate AS affiliate, >> cl.idCreative AS creative, cl.subid, cl.datetime >> dev-# FROM click AS cl LEFT JOIN conversion AS co ON cl.clickGenerated >> = co.clickGenerated >> dev-# WHERE cl."date" >= $1 >> dev-# AND cl."date" <= $2 >> dev-# AND cl.idAffiliate = $3 >> dev-# LIMIT $4; > > Your problem is that the query as written is hard to plan. The > database has no idea what you pass in, it has to guess. (IMO, It > almost always guesses wrong...I think it should assume 1 row > returned). Also, the db has no idea what you want to pass in at plan > time for date. One of the things you can try here is to build your query then execute it so it has to be planned each time.
В списке pgsql-performance по дате отправления: