文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

postgresql 12 数据库分区表之 list

2020-05-25 14:39

关注


	postgresql 12 数据库分区表之 list
[数据库教程]

os: centos 7.4
db: postgresql 12.2

postgresql 12 的分区表已经比较完善。

# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core) 
# 
# su - postgres
Last login: Thu Mar 19 14:47:45 CST 2020 on pts/0
$ 
$ psql
psql (12.2)
Type "help" for help.

postgres=# select version();
                                                 version                                                 
---------------------------------------------------------------------------------------------------------
 PostgreSQL 12.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)

postgres=# show enable_partition_pruning;
 enable_partition_pruning 
--------------------------
 on
(1 row)

postgres=# select name,setting from pg_settings where name like ‘%partition%‘;
               name                | setting 
-----------------------------------+---------
 enable_partition_pruning          | on
 enable_partitionwise_aggregate    | off
 enable_partitionwise_join         | off
(3 rows) 

for list partitioning, the partition key must consist of a single column or expression.

postgres=# CREATE TABLE cities (
    city_id      bigint not null,
    name         text   not null,
    population   bigint
) PARTITION BY LIST (name);

CREATE TABLE cities_1 PARTITION OF cities FOR VALUES IN (‘A‘);
CREATE TABLE cities_2 PARTITION OF cities FOR VALUES IN (‘B‘);
CREATE TABLE cities_3 PARTITION OF cities FOR VALUES IN (‘C‘);
CREATE TABLE cities_4 PARTITION OF cities FOR VALUES IN (‘D‘);

postgres=# d+
                                        List of relations
 Schema |             Name              |       Type        |  Owner   |    Size    | Description
--------+-------------------------------+-------------------+----------+------------+-------------
 public | cities                        | partitioned table | postgres | 0 bytes    | 
 public | cities_1                      | table             | postgres | 8192 bytes | 
 public | cities_2                      | table             | postgres | 8192 bytes | 
 public | cities_3                      | table             | postgres | 8192 bytes | 
 public | cities_4                      | table             | postgres | 8192 bytes |  
(5 rows)

postgres=# select * from pg_inherits;
 inhrelid | inhparent | inhseqno 
----------+-----------+----------
    16727 |     16724 |        1
    16733 |     16724 |        1
    16739 |     16724 |        1
    16745 |     16724 |        1
(4 rows)

postgres=# insert into cities
select 1,‘A‘,1 
union all
select 2,‘B‘,2
union all
select 3,‘C‘,3 
union all
select 4,‘D‘,4
;

postgres=# d+
                                        List of relations
 Schema |             Name              |       Type        |  Owner   |    Size    | Description 
--------+-------------------------------+-------------------+----------+------------+-------------
 public | cities                        | partitioned table | postgres | 0 bytes    | 
 public | cities_1                      | table             | postgres | 16 kB      | 
 public | cities_2                      | table             | postgres | 16 kB      | 
 public | cities_3                      | table             | postgres | 16 kB      | 
 public | cities_4                      | table             | postgres | 16 kB      | 
(5 rows)

postgres=# explain select * from cities where name = ‘B‘;
                        QUERY PLAN                        
----------------------------------------------------------
 Seq Scan on cities_2  (cost=0.00..23.38 rows=5 width=48)
   Filter: (name = ‘B‘::text)
(2 rows)

postgres=# explain select * from cities where name in (‘B‘,‘C‘);
                           QUERY PLAN                            
-----------------------------------------------------------------
 Append  (cost=0.00..46.86 rows=22 width=48)
   ->  Seq Scan on cities_2  (cost=0.00..23.38 rows=11 width=48)
         Filter: (name = ANY (‘{B,C}‘::text[]))
   ->  Seq Scan on cities_3  (cost=0.00..23.38 rows=11 width=48)
         Filter: (name = ANY (‘{B,C}‘::text[]))
(5 rows)
 

参考:
https://www.postgresql.org/docs/12/sql-createtable.html
https://www.postgresql.org/docs/12/ddl-partitioning.html

postgresql 12 数据库分区表之 list

原文地址:https://www.cnblogs.com/telwanggs/p/13792771.html

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯