postgresql中IN子查询改写为hash join连接
来源:互联网 发布:软件测试工程师年龄 编辑:程序博客网 时间:2024/05/16 01:09
DB-version:
test SQL:
QUERY PLAN:
我们可以看出,执行计划里面出现了(x.x_num = y.y_num),这是在原SQL语句里面所没有的,Hash Join 说明,优化器在逻辑优化部分将
查询语句重写为两表连接。
[postgres@CentOS ~]$ postgres --versionpostgres (PostgreSQL) 9.2.3
Relations are as follows:
uu=# \d x Table "public.x" Column | Type | Modifiers --------+-----------------------+----------- x_num | integer | x_name | character varying(32) | uu=# \d y Table "public.y" Column | Type | Modifiers --------+-----------------------+----------- y_num | integer | y_name | character varying(32) |
test SQL:
SELECT * FROM X WHERE x_num IN(SELECT y_num FROM y)
QUERY PLAN:
uu=# EXPLAIN SELECT * FROM X WHERE x_num IN(SELECT y_num FROM y); QUERY PLAN ---------------------------------------------------------------------- Hash Join (cost=23.25..49.88 rows=350 width=86) Hash Cond: (x.x_num = y.y_num) -> Seq Scan on x (cost=0.00..17.00 rows=700 width=86) -> Hash (cost=20.75..20.75 rows=200 width=4) -> HashAggregate (cost=18.75..20.75 rows=200 width=4) -> Seq Scan on y (cost=0.00..17.00 rows=700 width=4)(6 rows)
我们可以看出,执行计划里面出现了(x.x_num = y.y_num),这是在原SQL语句里面所没有的,Hash Join 说明,优化器在逻辑优化部分将
查询语句重写为两表连接。
0 0
- postgresql中IN子查询改写为hash join连接
- 子查询解嵌套in改写为exists
- left outer join 改写标量子查询
- SQL中带有NOT IN 子查询改写
- SQL改写, 聚合语句, left join 改写标量子查询
- 46.笔记 MySQL学习——将子查询改写为连接
- oracle sql 多表 嵌套子查询 连接查询, join where exist in 的区别
- postgresql对IN子查询的处理
- 标量子查询改写
- 子查询解嵌套not in 无法展开改写
- oracle标量子查询简介和表连接改写
- Linq to SQL 语法查询(子查询 & in操作 & join )
- 标量子查询SQL改写
- oracle中查询:子查询,连接查询
- 多表连接子查询;left join、right join、inner join的区别
- mysql 两表join与in子查询的比较
- in子查询、exists子查询、连接,效率的探讨
- in子查询、exists子查询、连接,效率的探讨
- 健康饮食小常识大揭秘
- 基于nginx_http_push_module模块让nginx变成Comet Server
- 一种基于Qt的可伸缩的全异步C/S架构服务器实现(六) 整合各个模块实现功能
- QT 线程池 + TCP 小试(一)线程池的简单实现
- 2014谈这个女朋友总结
- postgresql中IN子查询改写为hash join连接
- 标签a的js代码中引号引起的bug
- QT 线程池 + TCP 小试(二)实现通信功能
- lodop打印控件破解思路详解(二)
- [Android] 环境配置之Android Studio开发NDK
- CMake安装和使用
- QT 线程池 + TCP 小试(三)实现最终功能
- 微营销:数字世界的第二张面孔
- java 开发前奏