Re: Should we optimize the `ORDER BY random() LIMIT x` case?

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.

In response to

Responses

Browse pgsql-hackers by date

  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