您的位置:首页 > 数据库

pgsql使用积累系列_表分区(测试)

2018-01-19 14:21 316 查看
写在前面:这不是一个知识系列博客,这只是对本人使用过知识的一个记录,最好的资源应该是官方文档。

官网doc: https://www.postgresql.org/docs/current/static/plpgsql.html select * from pg_tables where schemaname='public' order by tablename
-- 87.139s 触发器实现
-- 32.532s 规则实现
insert into mastermeasure select generate_series(1,1000000),now(),1,1;

insert into mastermeasure select generate_series(1,1000000),now() + interval '1 month',2,2;

insert into mastermeasure select generate_series(1,1000000),now() + interval '2 month',3,3;

insert into mastermeasure select generate_series(1,1000000),now() + interval '3 month',4,4;
 
-- 41.277s
insert into measurement select generate_series(1,1000000),now(),1,1;

insert into measurement select generate_series(1,1000000),now() + interval '1 month',2,2;

insert into measurement select generate_series(1,1000000),now() + interval '2 month',3,3;

insert into measurement select generate_series(1,1000000),now() + interval '3 month',4,4;

select * from measurement where logdate = '2018-02-21'
-- on off partition
SET constraint_exclusion = partition;
EXPLAIN select * from mastermeasure where logdate = '2017-11-22'
truncate table users;

explain select count(0) from crm_order where id < 10000000

-- 测试多层继承关系
CREATE TABLE users();

CREATE TABLE users3 (firstname text, lastname text, id serial primary key);
alter table users3 add CONSTRAINT c_users
check (firstname='sun');

insert into users3 select 'sun','testuser3', generate_series(51,60);

alter table users3 inherit users;

create table users1_1(
check (lastname='testuser1')
) inherits (users1)

create rule users1_1_insert as 
on insert to users1 where lastname='testuser1'
do instead 
insert into users1_1 VALUES (NEW.*)

insert into users select 'wang','testuser1',generate_series(41,50)

explain select * from users a,permitions b where a.firstname='wang' 
and a.id = b.userid and ptype='read' 
select * from only users1;
explain select count(0) from users where firstname='sun'
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: