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. ValueError: Invalid leaf XXX

    Bug:ValueError: Invalid leaf XXX 无效的搜索条件——检查search函数中的domain表达式格式!是否少了括号! search(['user_id', '=', us ...

  2. Java50道经典习题-程序23 求岁数

    题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁.问第4个人岁数,他说比第3个人大2岁.问第三个人,又说比第2人大两岁.问第2个人,说比第1个人大两岁.最后问第一个人,他说是10岁.请问 ...

  3. 关于tomcat无法启动问题详解

    通常情况tomcat无法启动,有这么几个原因?(1)代码有问题; (2)tomcat有问题; (3)端口被占; (4)动态web项目为3.0: (5)java环境运行内存不足; 这是比较常见的问题.解 ...

  4. 近十年one-to-one最短路算法研究整理

    前言:针对单源最短路算法,目前最经典的思路即标号算法,以Dijkstra算法和Bellman-Ford算法为根本演进了各种优化技术和算法.针对复杂网络,传统的优化思路是在数据结构和双向搜索上做文章,或 ...

  5. 分布式消息通信ActiveMQ

    消息中间件 消息中间件是指利用高效可靠的消息传递机制进行平台无关的数据交流,并且基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程之间的通信. 消息中间件能 ...

  6. Vue 源码分析——构造函数原型

    在执行 npm run dev 的时候 根据script/config.js 文件中的配置 'web-full-dev': { entry: resolve('web/entry-runtime-wi ...

  7. Java调用WeChat's API总结

    微信公众号结合着内置浏览器,有着普通浏览器无法完成的服务,前者可以获取浏览页面的微信用户的信息,从而根据信息为用户提供基于微信的更多服务:而后者仅仅能够浏览页面,通过用户的输入信息与用户互动. 本人根 ...

  8. Android环境搭建及Ionic打包(win7)

    本人刚刚接触Ionic3,初步进行打包操作,将其遇到的问题和整个流程记录下载,方便以后的巩固,也为小白们提供一个参考.因本人没有appleヽ(ー_ー)ノ,而且使用的是WIN7系统,所以暂时只提供了WI ...

  9. Ubuntu16.04上安装neo4j数据库

    什么是neo4j数据库? neo4j数据库是图数据库的一种,属于nosql的一种,常见的nosql数据库还有redis.memcached.mongDB等,不同于传统的关系型数据库,nosql数据也有 ...

  10. Linux 判断系统任务是否正在运行

    #!/bin/bash if ps -ef|grep "php index"|egrep -v grep >/dev/null then >& >> ...