Hi,

You are right. Too quickly copy-paste on my part :-)

I take this opportunity to add a NOT insignificant detail.

Before executing the select query I clear the cache:

systemctl stop postgresql-16 && sync && echo 3 > /proc/sys/vm/drop_caches  &&  systemctl start postgresql-16

I need to get a performance result even if data is not in cache.


My best regards,

Agharta


Il 27/06/24 5:27 PM, Ron Johnson ha scritto:
On Thu, Jun 27, 2024 at 11:20 AM aghart...@gmail.com <aghart...@gmail.com> wrote:
[snip]

    -- insert 4M records
    insert into test_table(pk_id) select generate_series(1,4000000,1);

    -- now set some random data, distribuited between specific ranges
    (as in
    my production table)
    update test_table set
    datetime_field_1 = timestamp '2000-01-01 00:00:00' + random() *
    (timestamp '2024-05-31 23:59:59' - timestamp '2000-01-01 00:00:00'),
    integer_field_1 = floor(random() * (6-1+1) + 1)::int,
    integer_field_2 = floor(random() * (200000-1+1) + 1)::int;


    -- indexes
    CREATE INDEX idx_test_table_integer_field_1 ON
    test_table(integer_field_1);
    CREATE INDEX xtest_table_datetime_field_1 ON
    test_table(datetime_field_1
    desc);
    CREATE INDEX idx_test_table_integer_field_2 ON
    test_table(integer_field_2);


Off-topic: save some resources by vacuuming before creating indices.

Reply via email to