From: | Thomas Kellerer <shammat(at)gmx(dot)net> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Correct way of using complex expressions as partitioning key |
Date: | 2023-10-27 09:08:39 |
Message-ID: | d95d1362-dc57-49f0-b5fd-ce99a247236e@gmx.net |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Alexander Rumyantsev schrieb am 27.10.2023 um 06:27:
> Hello!
>
> Is there some correct way to use complex expressions as a key for partitioned table?
> Inserting works as expected, but select runs over all partitions until use complete partition key expression as predicate
>
> test=# create table test (
> id text,
> v1 bigint,
> v2 bigint
> )
> partition by range (((v1 + v2) % 10));
> CREATE TABLE
>
> test=# create table test_1 partition of test for values from (0) to (1);
> CREATE TABLE
>
> test=# create table test_2 partition of test for values from (1) to (2);
> CREATE TABLE
>
> test=# insert into test values (1, 100, 101);
> INSERT 0 1
>
> test=# insert into test values (1, 100, 100);
> INSERT 0 1
>
> test=# select * from test_1;
> id | v1 | v2
> ----+-----+-----
> 1 | 100 | 100
> (1 row)
>
> test=# select * from test_2;
> id | v1 | v2
> ----+-----+-----
> 1 | 100 | 101
> (1 row)
It seems you are trying to simulate hash partitioning using that expression.
Why not use hash partitioning directly then?
create table test (
id text,
v1 bigint,
v2 bigint
)
partition by hash (v1, v2);
create table test_1
partition of test
for values with (modulus 2, remainder 0);
create table test_2
partition of test
for values with (modulus 2, remainder 1);
Then the select will result in:
QUERY PLAN
-----------------------------------------------------------------------------------------------------
Seq Scan on test_1 test (cost=0.00..17.49 rows=1 width=48) (actual time=0.015..0.016 rows=1 loops=1)
Filter: ((v1 = 100) AND (v2 = 100))
Planning Time: 0.159 ms
Execution Time: 0.037 ms
From | Date | Subject | |
---|---|---|---|
Next Message | Thiemo Kellner | 2023-10-27 09:34:02 | Re: need SQL logic to find out way's to Implement check sum to validate table data is migrated correctly |
Previous Message | Y_esteembsv-forum | 2023-10-27 08:56:07 | need SQL logic to find out way's to Implement check sum to validate table data is migrated correctly |