You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PieCloudDB数据库是否支持视图与分区?如何按时间或枚举值分区?

PieCloudDB 视图与分区功能说明及实操方法

一、视图与分区功能支持情况

  • 视图:PieCloudDB完全兼容标准SQL视图,支持普通视图、物化视图的创建与使用。可通过CREATE VIEW定义视图,支持基于视图的查询,符合条件的视图还支持更新操作。
  • 分区:PieCloudDB继承自PostgreSQL的分区机制,支持范围分区、列表分区、哈希分区等多种分区类型,能满足按时间、枚举值等业务场景的分区需求。

二、按时间对表进行分区(范围分区)

1. 创建主分区表

先定义以时间字段为分区键的主表:

CREATE TABLE orders (
    order_id INT,
    order_date TIMESTAMP,
    amount NUMERIC(10,2)
) PARTITION BY RANGE (order_date);

2. 创建子分区(按月份划分示例)

根据时间范围创建对应的子分区:

-- 2024年1月数据分区
CREATE TABLE orders_202401 PARTITION OF orders
    FOR VALUES FROM ('2024-01-01 00:00:00') TO ('2024-02-01 00:00:00');

-- 2024年2月数据分区
CREATE TABLE orders_202402 PARTITION OF orders
    FOR VALUES FROM ('2024-02-01 00:00:00') TO ('2024-03-01 00:00:00');

3. 数据操作

插入数据时无需指定分区,数据库会自动将数据路由到对应时间范围的子分区:

INSERT INTO orders VALUES (1, '2024-01-15 10:30:00', 100.50);

查询时直接操作主表,数据库会自动扫描目标时间范围的分区,提升查询效率:

SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-01-31';

三、按枚举值对表进行分区(列表分区)

1. 创建主分区表

以枚举类型的字段(如用户地区)作为分区键:

CREATE TABLE users (
    user_id INT,
    username VARCHAR(50),
    region VARCHAR(20)
) PARTITION BY LIST (region);

2. 创建子分区

为每个枚举值创建独立分区,也可设置默认分区收纳未匹配的值:

-- 北京地区分区
CREATE TABLE users_beijing PARTITION OF users
    FOR VALUES IN ('北京');

-- 上海地区分区
CREATE TABLE users_shanghai PARTITION OF users
    FOR VALUES IN ('上海');

-- 广州地区分区
CREATE TABLE users_guangzhou PARTITION OF users
    FOR VALUES IN ('广州');

-- 其他地区统一分区(可选)
CREATE TABLE users_other PARTITION OF users
    FOR VALUES IN (DEFAULT);

3. 数据操作

插入数据时自动匹配对应枚举值的分区:

INSERT INTO users VALUES (1, 'zhangsan', '北京');
INSERT INTO users VALUES (2, 'lisi', '深圳'); -- 自动进入users_other分区

查询指定枚举值的数据:

SELECT * FROM users WHERE region = '北京';

内容的提问来源于stack exchange,提问作者heihei Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:27:13