pgsql 表分区语法
时间: 2023-07-26 10:04:43 浏览: 103
PostgreSQL 创建表分区
5星 · 资源好评率100%
PostgreSQL 支持表分区,可以将一张大表分成多个子表,每个子表存储一部分数据。这样可以提高查询性能,同时也方便数据的维护和管理。下面是 PostgreSQL 表分区的语法:
1. 创建父表
```
CREATE TABLE parent_table (
id int,
name varchar(50),
created_at timestamp
);
```
2. 创建子表并继承父表
```
CREATE TABLE child_table_1 (
CONSTRAINT child_table_1_pk PRIMARY KEY (id)
) INHERITS (parent_table);
CREATE TABLE child_table_2 (
CONSTRAINT child_table_2_pk PRIMARY KEY (id)
) INHERITS (parent_table);
```
3. 创建触发器
```
CREATE OR REPLACE FUNCTION insert_parent_table() RETURNS TRIGGER AS $$
BEGIN
IF ( NEW.created_at >= '2022-01-01' ) THEN
INSERT INTO child_table_1 VALUES (NEW.*);
ELSE
INSERT INTO child_table_2 VALUES (NEW.*);
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER insert_parent_trigger
BEFORE INSERT ON parent_table
FOR EACH ROW
EXECUTE FUNCTION insert_parent_table();
```
4. 插入数据
```
INSERT INTO parent_table (id, name, created_at)
VALUES (1, 'Alice', '2022-01-02');
INSERT INTO parent_table (id, name, created_at)
VALUES (2, 'Bob', '2021-12-31');
```
5. 查询数据
```
SELECT * FROM parent_table;
SELECT * FROM child_table_1;
SELECT * FROM child_table_2;
```
当我们执行上述查询时,会发现数据被正确地存储在了相应的子表中。需要注意的是,我们可以根据自己的需求设定分区规则,例如按照时间、地域等方式进行分区。
阅读全文