pg 10多级分区表(range_list)配置查询
admin
2023-05-22 02:02:48
0

-- define partitioned table: t_range_list

create table t_range_list(id bigserial, tenant_id int, crt_time timestamp) partition by list ( mod(tenant_id, 10));



-- level 1 : list-- list ( mod(tenant_id, 10))

create table t_range_list_0 partition of t_range_list (id, tenant_id, crt_time ) for values in (0) partition by range (crt_time);

create table t_range_list_1 partition of t_range_list (id, tenant_id, crt_time ) for values in (1) partition by range (crt_time); 

create table t_range_list_2 partition of t_range_list (id, tenant_id, crt_time ) for values in (2) partition by range (crt_time); 

create table t_range_list_3 partition of t_range_list (id, tenant_id, crt_time ) for values in (3) partition by range (crt_time);

create table t_range_list_4 partition of t_range_list (id, tenant_id, crt_time ) for values in (4) partition by range (crt_time);

create table t_range_list_5 partition of t_range_list (id, tenant_id, crt_time ) for values in (5) partition by range (crt_time);

create table t_range_list_6 partition of t_range_list (id, tenant_id, crt_time ) for values in (6) partition by range (crt_time);

create table t_range_list_7 partition of t_range_list (id, tenant_id, crt_time ) for values in (7) partition by range (crt_time);

create table t_range_list_8 partition of t_range_list (id, tenant_id, crt_time ) for values in (8) partition by range (crt_time);

create table t_range_list_9 partition of t_range_list (id, tenant_id, crt_time ) for values in (9) partition by range (crt_time);



-- level 2 : range-- range (crt_time)

-- t_range_list_0

create table t_range_list_0_201701 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_0_201702 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_0_201703 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_0_201704 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_0_201705 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_0_201706 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_0_201707 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_0_201708 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_0_201709 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_0_201710 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_0_201711 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_0_201712 partition of t_range_list_0 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- t_range_list_1

create table t_range_list_1_201701 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_1_201702 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_1_201703 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_1_201704 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_1_201705 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_1_201706 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_1_201707 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_1_201708 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_1_201709 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_1_201710 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_1_201711 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_1_201712 partition of t_range_list_1 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- t_range_list_2;

create table t_range_list_2_201701 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_2_201702 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_2_201703 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_2_201704 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_2_201705 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_2_201706 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_2_201707 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_2_201708 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_2_201709 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_2_201710 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_2_201711 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_2_201712 partition of t_range_list_2 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');





-- t_range_list_3;

create table t_range_list_3_201701 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_3_201702 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_3_201703 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_3_201704 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_3_201705 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_3_201706 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_3_201707 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_3_201708 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_3_201709 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_3_201710 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_3_201711 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_3_201712 partition of t_range_list_3 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');



-- t_range_list_4;

create table t_range_list_4_201701 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_4_201702 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_4_201703 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_4_201704 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_4_201705 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_4_201706 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_4_201707 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_4_201708 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_4_201709 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_4_201710 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_4_201711 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_4_201712 partition of t_range_list_4 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- t_range_list_5;

create table t_range_list_5_201701 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_5_201702 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_5_201703 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_5_201704 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_5_201705 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_5_201706 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_5_201707 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_5_201708 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_5_201709 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_5_201710 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_5_201711 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_5_201712 partition of t_range_list_5 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- t_range_list_6;

create table t_range_list_6_201701 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_6_201702 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_6_201703 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_6_201704 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_6_201705 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_6_201706 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_6_201707 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_6_201708 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_6_201709 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_6_201710 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_6_201711 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_6_201712 partition of t_range_list_6 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- t_range_list_7;

create table t_range_list_7_201701 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_7_201702 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_7_201703 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_7_201704 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_7_201705 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_7_201706 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_7_201707 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_7_201708 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_7_201709 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_7_201710 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_7_201711 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_7_201712 partition of t_range_list_7 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- t_range_list_8;

create table t_range_list_8_201701 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_8_201702 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_8_201703 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_8_201704 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_8_201705 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_8_201706 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_8_201707 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_8_201708 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_8_201709 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_8_201710 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_8_201711 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_8_201712 partition of t_range_list_8 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- t_range_list_9;

create table t_range_list_9_201701 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-01-01') to ('2017-02-01');

create table t_range_list_9_201702 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-02-01') to ('2017-03-01');

create table t_range_list_9_201703 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-03-01') to ('2017-04-01');

create table t_range_list_9_201704 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-04-01') to ('2017-05-01');

create table t_range_list_9_201705 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-05-01') to ('2017-06-01');

create table t_range_list_9_201706 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-06-01') to ('2017-07-01');

create table t_range_list_9_201707 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-07-01') to ('2017-08-01');

create table t_range_list_9_201708 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-08-01') to ('2017-09-01');

create table t_range_list_9_201709 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-09-01') to ('2017-10-01');

create table t_range_list_9_201710 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-10-01') to ('2017-11-01');

create table t_range_list_9_201711 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-11-01') to ('2017-12-01');

create table t_range_list_9_201712 partition of t_range_list_9 (id  primary key, tenant_id , crt_time ) for values from ('2017-12-01') to ('2018-01-01');


-- insert test data:

insert into t_range_list(tenant_id,crt_time) values(10110,'2017-01-01 09:10:30'),(10111,'2017-02-01 09:10:30'),(10112,'2017-03-01 09:10:30'),(10113,'2017-04-01 09:10:30'),

(10114,'2017-05-01 09:10:30'),(10115,'2017-06-01 09:10:30'),(10116,'2017-07-01 09:10:30'),(10118,'2017-08-01 09:10:30'),

(10119,'2017-09-01 09:10:30'),(10120,'2017-10-01 09:10:30'),(10121,'2017-11-01 09:10:30'),(10122,'2017-12-01 09:10:30')


--excute SQL Select

pdb=# explain analyze select * from t_range_list

where mod(tenant_id, 10)=mod(10112, 10)

and crt_time='2017-03-01 09:10:30';

                                                      QUERY PLAN                                                       

-----------------------------------------------------------------------------------------------------------------------

 Append  (cost=0.00..39.75 rows=1 width=20) (actual time=0.015..0.016 rows=1 loops=1)

   ->  Seq Scan on t_range_list_2_201703  (cost=0.00..39.75 rows=1 width=20) (actual time=0.014..0.015 rows=1 loops=1)

         Filter: ((crt_time = '2017-03-01 09:10:30'::timestamp without time zone) AND (mod(tenant_id, 10) = 2))

 Planning time: 5.177 ms

 Execution time: 0.047 ms

(5 rows)


pdb=# 


相关内容

热门资讯

沙特消息称伊朗提出有条件地将浓... 据沙特方面当地时间18日消息,伊朗旨在结束中东冲突的最新修订方案包括有条件地将浓缩铀转移到俄罗斯,而...
广西再发生5.2级地震,凤凰记... 5月18日晚,广西柳州再度发生5.2级地震。凤凰卫视记者朱家杰深入震中上步村,摄像机全程记录下采访当...
黑龙江省高校科研成果“三进三促... 中新网黑龙江新闻5月17日电(张媛媛)近日,黑龙江省高校科研成果“三进三促”专项行动——哈尔滨理工大...
GreyOrange推出AI仓... GreyOrange近日发布了一款全新的仓储模拟平台,旨在帮助运营商在实施现场变更之前,对自动化部署...
中科院高能物理研究所所长曹俊:... 5月18日,在清华大学举行的2026国际基础科学大会(ICBS 2026)新闻发布会上,中国科学院高...
新闻发布会刚结束,柳州再发地震... 中国地震台网正式测定:05月18日21时44分在广西柳州市柳南区(北纬24.37度,东经109.26...
菲律宾副总统莎拉弹劾审理程序启... 据凤凰卫视报道,菲律宾参议院5月18日下午正式组成弹劾法庭,启动对莎拉·杜特尔特的弹劾审理程序,全体...
洁丽雅报警,“私生子传闻造成严... 5月18日晚间,洁丽雅官方微博发布严正声明。声明提到,近日,网络上出现关于洁丽雅家居股份有限公司、董...
产学研共探规模化路径 量子科仪... 上证报中国证券网讯(记者 刘一枫)量子精密测量正加速跨越技术验证门槛,从“能不能用”的实验室探索,迈...
广西柳州再发生5.2级地震,震... 中国地震台网正式测定:05月18日21时44分在广西柳州市柳南区(北纬24.37度,东经109.26...