join优化
Posted hapyygril
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了join优化相关的知识,希望对你有一定的参考价值。
1.left outer join先执行连接操作,再将结果通过WHERE语句进行过滤
select s.ymd,s.symbol,s.price_close,d.dividend
from stocks s
left outer join
dividends d
on s.ymd=d.ymd and s.symbol and d.symbol
where s,symbol="AAPL"
2.left outer join 先执行where过滤,再执行连接操作
select s.ymd,s.symbol,s.price_close,d.dividend
(select * from stocks where symbol="AAPL") s
left outer join
(select * from dividends where symbol="AAPL") d
on s.ymd=d.ymd
3.内连接,可以将过滤条件放到on语句中
4. 将stocks表作为驱动表,虽然在查询中不是位于最后面的
select /*+STREAMTABLE(s)* / s.ymd,s.symbol,s.price_close,d.dividend
from stocks s
left outer join
dividends d
on s.ymd=d.ymd and s.symbol and d.symbol
where s,symbol="AAPL"
5. MAPJOIN 不支持右外连接(right outer join)和全外连接(full outer join)
select /*+MAPJOIN(s)* / s.ymd,s.symbol,s.price_close,d.dividend
from stocks s
JOIN(INNER JOIN)
dividends d
on s.ymd=d.ymd and s.symbol and d.symbol
where s,symbol="AAPL"
6.笛卡儿积不支持优化
select * from stocks join dividends
以上是关于join优化的主要内容,如果未能解决你的问题,请参考以下文章
clickhouse,数据查询与写入优化,分布式子查询优化,外部聚合/排序优化,基于JOIN引擎的优化,SQL优化案例,物化视图提速,查询优化常用经验法则,选择和主键不一样的排序键,数据入库优化(代码