首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgresql删除分区表

postgresql删除分区表
EN

Stack Overflow用户
提问于 2014-11-21 11:11:15
回答 2查看 11.4K关注 0票数 1

我是Postgresql的新手,不知道如何管理分区表。

我有基于日期的分区表。在插入数据之前,触发器检查日期并放入相应的子表中。

例如:

11.15.2014 -插入到名为11-15-2014_log的表中。

11.16.2014 -插入到名为11-16-2014_log的表中。

现在我想创建一个函数来删除旧的子表,例如,超过90天的表。我应该根据表名找到并删除子表(因为它包含创建日期),还是应该在主表中找到超过90天的记录??

任何建议或提示都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-11-21 16:22:53

我将只从主表中删除较旧的记录,如下所示:

代码语言:javascript
复制
DELETE FROM master_table WHERE creation_date < 'today' - INTERVAL '90 days';

但是,我的建议是将此查询安排在服务器最空闲的时间运行,比如5:00am

票数 0
EN

Stack Overflow用户

发布于 2019-04-07 22:56:29

关于删除分区,下面的示例删除了sales表的一个分区。使用以下命令创建sales表:

代码语言:javascript
复制
CREATE TABLE sales
(
  dept_no     number,   
  part_no     varchar2,
  country     varchar2(20),
  date    date,
  amount  number
)
PARTITION BY LIST(country)
(
  PARTITION europe VALUES('FRANCE', 'ITALY'),
  PARTITION asia VALUES('INDIA', 'PAKISTAN'),
  PARTITION americas VALUES('US', 'CANADA')
);

查询ALL_TAB_PARTITIONS视图将显示分区名称:

代码语言:javascript
复制
acctg=# SELECT partition_name, server_name, high_value FROM ALL_TAB_PARTITIONS;
 partition_name | server_name |     high_value      
----------------+-------------+---------------------
 europe         | seattle     | 'FRANCE', 'ITALY'
 asia           | chicago     | 'INDIA', 'PAKISTAN'
 americas       | boston      | 'US', 'CANADA'
(3 rows)

要从sales表中删除americas分区,请调用以下命令:

代码语言:javascript
复制
ALTER TABLE sales DROP PARTITION americas;

查询ALL_TAB_PARTITIONS视图表明分区已被成功删除:

代码语言:javascript
复制
acctg=# SELECT partition_name, server_name, high_value FROM ALL_TAB_PARTITIONS;
 partition_name |     high_value      
----------------+---------------------
 asia           | 'INDIA', 'PAKISTAN'
 europe         | 'FRANCE', 'ITALY'
(2 rows)
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27053499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档