PostgreSQL创建分区表,并插入大量数据

创建分区表,按日期范围分区

sql 复制代码
CREATE TABLE sales (
    id              serial,
    sale_date DATE,    
    amount NUMERIC,    
    PRIMARY KEY(id, sale_date)
) PARTITION BY RANGE (sale_date);

创建分区

sql 复制代码
CREATE TABLE sales_2019 PARTITION OF sales FOR VALUES FROM ('2019-01-01') TO ('2020-01-01'); 
CREATE TABLE sales_2020 PARTITION OF sales FOR VALUES FROM ('2020-01-01') TO ('2021-01-01'); 
CREATE TABLE sales_2021 PARTITION OF sales FOR VALUES FROM ('2021-01-01') TO ('2022-01-01'); 
CREATE TABLE sales_2022 PARTITION OF sales FOR VALUES FROM ('2022-01-01') TO ('2023-01-01'); 
CREATE TABLE sales_2023 PARTITION OF sales FOR VALUES FROM ('2023-01-01') TO ('2024-01-01'); 

插入随机日期和随机金额数据,每次插入2190001条数据

sql 复制代码
INSERT INTO sales (sale_date, amount)  
SELECT generate_series(to_date('2019-01-01','yyyy-mm-dd'), to_date('2023-12-31','yyyy-mm-dd'), '0.02 hours'), (random()*100.)::numeric(6,2);

测试性能

sql 复制代码
select count(1) from sales;

插入数据sql参考:https://pgfans.cn/a/1726

原文中有中类型的随机数据插入可供参考。

相关推荐
全栈前端老曹3 分钟前
【Redis】发布订阅模型 —— Pub/Sub 原理、消息队列、聊天系统实战
前端·数据库·redis·设计模式·node.js·全栈·发布订阅模型
SQL必知必会4 分钟前
使用 SQL 构建转化漏斗
数据库·sql·数据分析
丿BAIKAL巛6 分钟前
Docker部署的Mysql数据库自动化备份
数据库·mysql·docker
爬山算法8 分钟前
MongoDB(11)MongoDB的默认端口号是多少?
数据库·mongodb
betazhou9 分钟前
Mongodb日志类型以及日志轮转
数据库·mongodb
一次旅行9 分钟前
接口自动化测试模板
数据库·python·pytest
l1t17 分钟前
利用Docker安装PostgreSQL 19 dev版
docker·postgresql·容器
想睡hhh21 分钟前
redis的高效工作方式
数据库·redis·缓存
、BeYourself23 分钟前
PostgreSQL 安装中文全文检索插件zhparser扩展
数据库·postgresql·全文检索
dishugj36 分钟前
【Oracle】Oracle rac1 节点ora.chad offline解决方案
数据库·oracle