| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | "Merlin Moncure" <merlin(dot)moncure(at)rcsonline(dot)com> |
| Cc: | pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: parameterized limit statements |
| Date: | 2005-11-07 17:43:36 |
| Message-ID: | 21070.1131385416@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
"Merlin Moncure" <merlin(dot)moncure(at)rcsonline(dot)com> writes:
> The statements are invariably in form of
> select a,b,c,d from t
> where a >= $1 and
> (a > $1 or b >= $2) and
> (a > $1 or b > $2 or c >= $3) and
> (a > $1 or b > $2 or c > $3 or d > $4)
> order by a, b, c, d limit $5;
> ^^
> If I hardcode $5 to any sub-ridiculous value, I get a proper index plan.
> Does your patch assume a limit of 1 or 10% of table rows?
If it doesn't have a value for the parameter, it'll assume 10% of table
rows, which is what it's done for a long time if the LIMIT isn't
reducible to a constant.
I suspect the real issue here is that whatever you are doing doesn't
give the planner a value to use for the parameter. IIRC, at the moment
the only way that that happens is if you use the unnamed-statement
variation of the Parse/Bind/Execute protocol.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Marc Munro | 2005-11-07 18:09:54 | Odd db lockup - investigation advice wanted |
| Previous Message | Merlin Moncure | 2005-11-07 17:37:17 | Re: parameterized limit statements |