pgsql 分区表:

--主表
create table test(id integer, name varchar(32));
create index idx_test_id on test using btree(id); --分表
create table test_b (like test including constraints including defaults including indexes) inherits(test);
create table test_c (like test including constraints including defaults including indexes) inherits(test); alter table test_b add constraint con_test_c check(id >=1001 and id <= 2000);
alter table test_c add constraint con_test_b check(id >=2001 and id <= 3000); create table test_d( check(id >=3001 and id <= 4000))inherits (test); --插数据
insert into test_b select generate_series(1001,2000),'bbb';
insert into test_c select generate_series(2001,3000),'ccc';
insert into test_d select generate_series(3001,4000),'ddd'; --分析表,加入计划
analyze test_a; analyze test_b; analyze test_c;
analyze test_d; --测试查询计划 constraint_exclusion
set constraint_exclusion = off/partition;
show constraint_exclusion; explain select * from test where id = 1; --测试Insert
insert into test values (11,'aaaaa'); select * from test where name = 'aaaaa' select * from test_a; insert into test values(1,'a'),(1111,'v'),(2222,'vv'); select * from test_c; --创建触发器函数
create function tb_partition_insert()
returns trigger as
$$
begin
if (id >=1 and id <= 1000) then
insert into test_a values(NEW.*);
elseif (id >=1001 and id <= 2000) then
insert into test_b values(NEW.*);
elseif (id >=2001 and id <= 3000) then
insert into test_c values (new.*);
else
raise exception 'Date out of range. Fix the tbl_partition_insert_trigger() function!';
end if ;
return null;
end
$$
language plpgsql; --触发器
create trigger insert_test_parition
before insert on test
for each row execute procedure tb_partition_insert(); --测试Insert
insert into test values(1,'a'),(1111,'v'),(2222,'vv'); select pg_size_pretty(pg_relation_size('test')); insert into test select generate_series(1,1000),'aa';
select count(1) from test_a; select pg_size_pretty(pg_relation_size('test')); select pg_table_size('test')

参考:

  1. 为主:http://www.cnblogs.com/mchina/archive/2013/04/09/2973427.html
  2. 为辅:http://my.oschina.net/Kenyon/blog/59455 ,http://www.postgres.cn/docs/9.4/ddl-partitioning.html#DDL-PARTITIONING-CONSTRAINT-EXCLUSION
  3. 例子参考:http://francs3.blog.163.com/blog/static/4057672720112422436937/
  4. 结合:http://www.cnblogs.com/stephen-liu74/archive/2012/04/27/2291814.html
  5. 查看表大小等操作:http://www.cnblogs.com/liuyuanyuanGOGO/p/3224554.html
  6. 分区表通过继承实现,在对表进行清除数据操作时,要注意是否会同时清除父表和字表:
  7. http://francs3.blog.163.com/blog/static/40576727201011203725668/

PostgreSQL建立分区表示例的更多相关文章

  1. ubuntu server下建立分区表/分区/格式化/自动挂载(转)

    link:http://www.thxopen.com/linux/2014/03/30/Linux_parted.html 流程为:新建分区-->格式化分区-->挂载分区 首先弄明白分区 ...

  2. MSSQL中建立分区表(转载备忘)

    转载自CSDN地址:http://bbs.csdn.net/topics/330087045 SQL Server 2005 分区表实践——建立分区表(partition table) 问题:有一个订 ...

  3. oracle_根据ID(字符型)建立分区表

    方案思路:有一张暴增的数据表(10亿级别),以后需求需要提高单条查询性能, 这个表有个唯一ID, 假设是UUID,采用区分首字母的方法,不同字母的数据入到不同的物理文件中. 第一步: 查找数据库服务器 ...

  4. hive之建立分区表和分区

    1. 建立分区表 create table 单分区表:其中分区字段是partdate,注意分区字段不能和表字段一样,否则会报重复的错 create table test_t2(words string ...

  5. PostgreSQL PARTITION 分区表

    PostgreSQL 分区表,操作性相当便捷. 但只能在创建时决定是否为分区表,并决定分区条件字段,普通表创建后,不能在修改为分区表. Note:通过其他方法也可转化为分区表. 和其他数据库一样,分区 ...

  6. SQL Server 2008 建立分区表 脚本

    /*第一步:创建分区函数*/Create partition function Part_func_Bag(varchar(20)) as range right /*正式区间for values(N ...

  7. Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在

    #!/bin/bash source /etc/profile; ################################################## # Author: ouyang ...

  8. SQL分区表示例

    -- Create tablecreate table TT_FVP_OCR_ADDRESS( id NUMBER not null, waybill_no VARCHAR2(32) not null ...

  9. jchdl - 初次使用建立项目示例

    https://mp.weixin.qq.com/s/HaarKjpHan08RUTlEX0XHg   一. 下载并安装JDK 8   下载链接:https://www.oracle.com/tech ...

随机推荐

  1. 【BZOJ-4568】幸运数字 树链剖分 + 线性基合并

    4568: [Scoi2016]幸运数字 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 238  Solved: 113[Submit][Status ...

  2. Python:Sqlmap源码精读之解析xml

    XML <?xml version="1.0" encoding="UTF-8"?> <root> <!-- MySQL --&g ...

  3. npm下载包时代理配置

    主要有两种方式,1通过命令行临时配置,2通过配置文件进行永久配置. 1.命令行: npm install --proxy http://localhost:1080 如果有账号密码等验证的,需要在后面 ...

  4. springMVC配置步骤

    所用的工具为eclipse for javaEE,tomcat 8.0 1.导入jar包 把以上的jar包全部复制到项目的WebContent/WEB-INF/lib目录中 2.在webContent ...

  5. magento app/design/adminhtml/default/default/template/sales/order/view/info.phtml XSS Vul

    catalogue . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link: http://www.freebuf. ...

  6. nagios note

    server: nagios nagios_plugin nrpe ip:192.168.1.2 client nagios_plugin xinetd nrpe ip:192.168.1.3 一篇介 ...

  7. 服务器添加ipa MIME 类型,防止ipa下载后变zip后缀

    客户反映apk文件下载 后缀会变为zip   打开mime.types文件   application/iphone pxl ipa application/vnd.android.package-a ...

  8. ubuntu常见错误--could not get lock /var/lib/dpkg/lock -open

    最近研究ubuntu,用apt-get命令安装一些软件包时,总报错:E:could not get lock /var/lib/dpkg/lock -open等 出现这个问题的原因可能是有另外一个程序 ...

  9. WINDBUG常用命令

    配置: File->Symbol path-> SRV*C:\symbols*http://msdl.microsoft.com/download/symbols 载入sos.dll  执 ...

  10. JavaScript DES 加密tripledes.js:

    <html> <head> <meta http-equiv="content-type" content="text/html; char ...