摘要:
对于普通的相关子查询, mysql一般采用条件上拉操作进行优化, 就是将子查询中,与和外表关联的条件,从子查询中上拉出去。
好处便是这样做了之后, 更便于将内表和外表转换为join操作。以利用join的优化策略进行进一步优化。
本文以TPCH-Q16的变体为例, 分析条件上拉优化。
DML:
查询SQL:
select
p_brand,
p_type,
p_size,
count(distinct ps_suppkey) as supplier_cnt
from
partsupp,
part
where
p_partkey = ps_partkey
and p_brand <> 'Brand#34'
and p_type not like 'LARGE BRUSHED%'
and p_size in (48, 19, 12, 4, 41, 7, 21, 39)
and ps_suppkey not in (
select
s_suppkey
from
supplier
where