Re: Default ordering option

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Cyril Champier <cyril(dot)champier(at)doctolib(dot)com>, Ian Barwick <ian(dot)barwick(at)2ndquadrant(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Default ordering option
Date: 2019-07-24 14:48:42
Message-ID: 76f267af-80ee-1f37-c774-fe134c228686@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 7/24/19 1:45 AM, Cyril Champier wrote:
> Thanks for your answers.
> Unfortunately the update trick only seems to work under certain conditions.
>
> I do this to shuffle my patients table:
> UPDATE "patients"
> SET "updated_at" = NOW()
> WHERE "patients"."id" = (SELECT "patients"."id" FROM "patients" ORDER BY
> random() LIMIT 1)
>
> Then indeed, this query returns different order:
> SELECT *
> FROM "patients"
>
> But this one (because it use an index?) always returns values in the
> same order:
> SELECT "id"
> FROM "patients"

Hmm, I don't see that:

test=# \d t1
Table "public.t1"
Column | Type | Collation | Nullable | Default
--------+-------------------+-----------+----------+---------
a | integer | | not null |
b | character varying | | |
Indexes:
"t1_pkey" PRIMARY KEY, btree (a)

test=# select * from t1;
a | b
---+---------
2 | cat
3 | fish
1 | dogfish
(3 rows)

test=# select a from t1;
a
---
2
3
1
(3 rows)

Are you sure there is nothing going on between the first and second
queries e.g. ROLLBACK?

>
>
>
> And for the other suggestion, I cannot blindly add 'ORDER BY random()'
> to every select,
> because of the incompatibility with distinct and union, and the way we
> use our orm.
>
Are you talking about the production or test queries above?

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2019-07-24 14:55:29 Re: postgres 9.5 DB corruption
Previous Message Jatinder Sandhu 2019-07-24 14:40:31 Re: partition table slow planning