| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Markus Demleitner <msdemlei(at)ari(dot)uni-heidelberg(dot)de> |
| Cc: | pgsql-general(at)lists(dot)postgresql(dot)org |
| Subject: | Re: SELECT DISTINCT <constant> scans the table? |
| Date: | 2021-12-16 20:47:57 |
| Message-ID: | 1238959.1639687677@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Markus Demleitner <msdemlei(at)ari(dot)uni-heidelberg(dot)de> writes:
> Maximally stripped down, my problem is that
> select distinct 300 from <bigtable>
> seqscans <bigtable> (at least in PostgreSQL 11.14). To me, it seems
> obvious that this ought be be just one row containing 300 once
> Postgres has established that <bigtable> is nonempty.
> Why do things not work like this? Am I missing something major?
That seems like the sort of optimization that we absolutely should
not spend cycles looking for. If it were a trivial change consuming
no detectable number of planning cycles, maybe it would be worth the
development and maintenance effort; though I'd be dubious about the
value. But the fact that it'd have to be transformed into something
testing whether the table is nonempty makes it fairly nontrivial.
I doubt it's worth the development cost plus the cycles imposed
on every other query.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Adrian Klaver | 2021-12-16 21:05:37 | Re: Packages, inner subprograms, and parameterizable anonymous blocks for PL/pgSQL |
| Previous Message | Bryn Llewellyn | 2021-12-16 20:36:22 | Re: Packages, inner subprograms, and parameterizable anonymous blocks for PL/pgSQL |