postgresql 12 数据库分区表之 list「终于解决」

postgresql 12 数据库分区表之 list「终于解决」os: centos 7.4db: postgresql 12.2 postgresql 12 的分区表已经比较完善。 版本 # cat /etc/centos-release CentOS Lin…

	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) 

single column list

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6671.html

(0)
上一篇 2023-04-05
下一篇 2023-04-05

相关推荐

  • IK分词器的安装与使用

    IK分词器的安装与使用分词器 什么是IK分词器? 分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,Elasticsearch

    2023-03-28
    160
  • mysql 8.0.23_dns list

    mysql 8.0.23_dns list本文转载自mysqlplayer,作者洪斌 MySQL Router是InnoDB Cluster架构的访问入口,在架构部署上,官方给出的建议是router与应用端绑定部署,避免router单点问题…

    2023-01-29
    149
  • 20200619 学习笔记[通俗易懂]

    20200619 学习笔记[通俗易懂]主键和唯一的区别 主键:唯一、不为空、只能有一个、可以组合但不推荐 唯一:唯一、可为空、可以多个、可以组合但不推荐 外键 要求在从表设置外键关系 从表的外键列的类型和主表的关联列的类型要求一致或兼容…

    2023-03-14
    152
  • Python工程师必备开发环境——Spyder 5.3.3

    Python工程师必备开发环境——Spyder 5.3.3Python语言已经成为目前最受欢迎的编程语言之一,其在数据分析、机器学习、科学计算等领域的应用越来越广泛。而一个优秀的Python开发环境是Python工程师必不可少的工具之一。Spyder 5.3.3以其易用性和高效性备受开发者喜爱,本文将详细介绍Spyder 5.3.3的优点和使用方法。

    2024-07-28
    38
  • Mariadb之复制过滤器 – Linux

    Mariadb之复制过滤器 – Linuxmariadb的主从复制集群,默认情况下是把主库上的所有库进行复制,只要在主库上产生写操作,从库基于主库的二进制日志做重放,从而实现把主库的上的库表复制到从库;复制过滤器指的是我们仅复制一个或几个数据

    2023-03-18
    160
  • R语言菜鸟教程

    R语言菜鸟教程由于数据分析和统计学的重要性越来越受到人们的关注,R语言逐渐成为了数据科学领域中使用最广泛的编程语言之一。R语言在统计建模、数据可视化、机器学习等方面具有强大的功能,是一项非常有用的工具。然而,对于初学者来说,R语言的学习可能会面临许多困难,因此本文将为大家介绍R语言菜鸟教程,帮助初学者更好地掌握R语言。

    2024-07-04
    54
  • MySQL查询重复数据「终于解决」

    MySQL查询重复数据「终于解决」假设有一个用户表 user,数据如下: 1、查询表中 uid 重复的数据 SELECT id, uid, name FROM USER WHERE uid IN (SELECT uid FROM US

    2023-02-28
    152
  • 使用Python快速寻找列表中的最小值

    使用Python快速寻找列表中的最小值计算列表中的最小值是Python中的常见操作之一。我们可以使用内置函数min()、sort(),或者使用循环来寻找列表中的最小值。下面分别介绍这三种方法。

    2023-12-28
    109

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注