Search Postgresql Archives

Re: Default ordering option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.klaver@xxxxxxxxxxx





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux