CREATE TABLE public.pgbench_accounts_bak (
aid integer NOT NULL,
bid integer,
abalance integer,
filler character(84)
);

ALTER TABLE public.pgbench_accounts_bak OWNER TO postgres;

ALTER TABLE ONLY public.pgbench_accounts_bak
ADD CONSTRAINT pgbench_accounts_bak_pkey PRIMARY KEY (aid);

explain select count(*) from pgbench_accounts;
Finalize Aggregate (cost=22188.97..22188.98 rows=1 width=8)
-> Gather (cost=22188.76..22188.97 rows=2 width=8)
Workers Planned: 2
-> Partial Aggregate (cost=21188.76..21188.77 rows=1 width=8)
-> Parallel Index Only Scan using pgbench_accounts_pkey on pgbench_accounts (cost=0.42..20147.09 rows=416667 width=0)

explain select * from pgbench_accounts a join pgbench_branches b on a.bid=b.bid ;
youge=# set parallel_setup_cost=1;
SET
youge=# set parallel_tuple_cost=0.001;
SET
youge=# explain select * from pgbench_accounts a join pgbench_branches_bak b on a.bid=b.bid ;
QUERY PLAN
-----------------------------------------------------------------------------------------------------------
Gather (cost=13744.46..57865.89 rows=1000000 width=461)
Workers Planned: 2
-> Parallel Hash Join (cost=13743.46..56864.89 rows=416667 width=461)
Hash Cond: (a.bid = b.bid)
-> Parallel Seq Scan on pgbench_accounts a (cost=0.00..20560.67 rows=416667 width=97)
-> Parallel Hash (cost=3092.65..3092.65 rows=176465 width=364)
-> Parallel Seq Scan on pgbench_branches_bak b (cost=0.00..3092.65 rows=176465 width=364)
(7 rows)

explain select * from pgbench_accounts a1 join pgbench_accounts_bak a2 on a1.bid = a2.bid where a2.aid >1000;
QUERY PLAN
------------------------------------------------------------------------------------------------
Merge Join (cost=473145.77..1499198922.65 rows=99914552113 width=194)
Merge Cond: (a2.bid = a1.bid)
-> Sort (cost=237718.93..240216.52 rows=999037 width=97)
Sort Key: a2.bid
-> Seq Scan on pgbench_accounts_bak a2 (cost=0.00..28894.00 rows=999037 width=97)
Filter: (aid > 1000)
-> Materialize (cost=235426.84..240426.84 rows=1000000 width=97)
-> Sort (cost=235426.84..237926.84 rows=1000000 width=97)
Sort Key: a1.bid
-> Seq Scan on pgbench_accounts a1 (cost=0.00..26394.00 rows=1000000 width=97)
(10 rows)

create index pgbench_accounts_bid_key on pgbench_accounts_bak(bid);

youge=# set parallel_setup_cost=1;
SET
youge=# set parallel_tuple_cost=0.001;
SET
youge=# explain select * from pgbench_accounts_bak a join pgbench_branches_bak b on a.bid=b.bid ;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------
Gather (cost=26251.42..42754.18 rows=1000000 width=461)
Workers Planned: 2
-> Merge Join (cost=26250.42..41753.18 rows=416667 width=461)
Merge Cond: (a.bid = b.bid)
-> Parallel Index Scan using pgbench_accounts_bid_key on pgbench_accounts_bak a (cost=0.42..36544.09 rows=416667 width=97)
-> Index Scan using pgbench_branches_bak_pkey on pgbench_branches_bak b (cost=0.42..9131.27 rows=299990 width=364)
(6 rows)

postgresql parallel join example的更多相关文章

  1. postgresql Delete+ join

    using tablename as alias DELETE FROM tv_episodes USING tv_episodes AS ed LEFT OUTER JOIN data AS nd ...

  2. How Distributed Outer Joins on PostgreSQL with Citus Work

    转自: https://docs.citusdata.com/en/v7.5/articles/outer_joins.html SQL is a very powerful language for ...

  3. 从技术专家到管理者的思路转变(V1)

    作为技术专家出身的管理者,是一种优势(你所做的很多决策可能比非技术出身的管理者更加具有可行性和性价比).也是一种劣势(你可能会过于自恋自己的技术优势).这取决于你在接下去的职业生涯中,如何取舍你的技术 ...

  4. BP-Wrapper:无锁竞争的缓存替换算法系统框架

    BP-Wrapper:无锁竞争的替换算法系统框架 最近看了一个golang的高性能缓存ristretto,该缓存可以很好地实现如下功能: Concurrent High cache-hit ratio ...

  5. Oracle提示大全

    Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行 ...

  6. Peeking into Apache Flink's Engine Room

    http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html   Join Processin ...

  7. Postgresql_fqw

    Postgresql_fqw 测试环境 Ubuntu 16.04 LTS云主机2台,主机名为pg1(192.168.0.34)和pg2(192.168.0.39). 安装postgresql 下面这个 ...

  8. Postgres by BigSQL and Hadoop_fdw

    Postgres by BigSQL and hadoop_fdw 测试Postgresql和远程Hive的Join操作. 测试环境 Centos6.8 HDP2.4集群,其中Hive Server2 ...

  9. [转]Oracle中Hint深入理解

    原文地址:http://czmmiao.iteye.com/blog/1478465 Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明 ...

随机推荐

  1. php版本跟扩展模块版本不兼容问题

    安装redis扩展后查看时候出现了这样报错: [root@localhost phpredis-develop]# php -m | grep redisPHP Warning: PHP Startu ...

  2. 小程序采坑之setData

    根据双向绑定当我setData的时候input的值应该改变,但是并没有.而且this.data中的值也没有改变 <input class="weui-input" bindi ...

  3. wepy build 错误 [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件。

    [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件. 缺少less包,npm install less -d

  4. f-stack中nginx配置后make出现error: ignoring return value of ‘ftruncate’

    问题 Nginx 配置后 make 出现error: src/os/unix/ngx_process_cycle.c: In function 'ngx_start_worker_processes' ...

  5. 跟我一起学Linux-线程创建,类似FreeRTOS创建任务

    1.参考学习大神网址:http://blog.csdn.net/ithomer/article/details/6063067 #include<stdio.h> #include< ...

  6. ubuntu 14.04 将窗体button移到右边

    刚刚安装了Ubuntu 14.04,想改动窗体button的位置.但依照曾经的办法发现不行了,在gconftool-->apps中找不到metacity. 多方查找后找到解决方式,例如以下 Ub ...

  7. 使用XWAF框架(4)——LunarCalendar日历组件

    XWAF提供了管理日历的com.xwaf.date.LunarCalendar静态类,可以直接使用,非常方便.该类包括六个主要静态方法: 4.1  isLeapYear(int year) 判断公历年 ...

  8. Oracle视图View

  9. trunc()

    select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss') f ...

  10. Servlet基础知识总结

    Servlet是JavaWeb应用开发的核心组件.Servlet运行在Servlet容器中(例如最常用的Tomcat),它可以为各种客户请求提供相应服务.Servlet可以轻松完成以下任务: 动态生成 ...