From: | Nico Williams <nico(at)cryptonector(dot)com> |
---|---|
To: | Aleksander Alekseev <aleksander(at)timescale(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andrei Lepikhov <lepihov(at)gmail(dot)com>, wenhui qiu <qiuwenhuifx(at)gmail(dot)com>, Vik Fearing <vik(at)postgresfriends(dot)org> |
Subject: | Re: Should we optimize the `ORDER BY random() LIMIT x` case? |
Date: | 2025-05-19 20:53:35 |
Message-ID: | aCuaT2gFGra1ba4L@ubby |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, May 19, 2025 at 10:38:19AM -0500, Nico Williams wrote:
> On Mon, May 19, 2025 at 01:25:00PM +0300, Aleksander Alekseev wrote:
> > I agree this would be most convenient for the user. Unfortunately this
> > will require us to check every SELECT query: "oh, isn't it by any
> > chance ORDER BY random() LIMIT x?". I don't think we can't afford such
> > a performance degradation, even a small one, for an arguably rare
> > case.
>
> Can the detection of such queries be done by the yacc/bison parser
> grammar?
Maybe the `sortby` rule could check if the expression is `random()`,
then `sort_clause` could check if `$3` is a one-item `sortby_list` of
just `random()` and mark `$$` as special -- this should be cheap, yes?
We'd still need to check for `LIMIT` somewhere else.
From | Date | Subject | |
---|---|---|---|
Next Message | Hari Krishna Sunder | 2025-05-19 21:13:45 | Re: Statistics Import and Export |
Previous Message | Peter Geoghegan | 2025-05-19 20:29:09 | Re: strange perf regression with data checksums |