暴力扫描的案例

分区剪裁合理性评估:http://help.aliyun-inc.com/internaldoc/detail/35451.html?spm=a2c1f.8259796.2.351.27b096d5sumssg
暴力扫描:http://gitlab.alibaba-inc.com/cdo/adrs/wikis/force_scan

暴力扫描的案例 对比 分区剪裁合理性评估 有矛盾:
分区裁剪合理性评估:
  (1) left Outer join 左表进行全表扫描,只有右表的分区裁剪有效果,如果放在where中,则两张表都会生效
  (2)Right Outer Join??与 Left Outer Join 类似,分区剪裁条件如果放在 on 中则只有 Right Outer Join的左表生效,如果放在 where 中,则两张表都会生效。
??(3) Full Outer Join??分区剪裁条件只有都放在where中才会生效,放在on中则都不会生效。

暴力扫描案例:
select
    a.id,  
    a.status,
    b.url,
    b.data_owner,
    c.keyword
from
    secods.odl_rcp_aliyun_case_main a
left outer join
    secods.odl_rcp_aliyun_url b
on a.id=b.main_id
left outer join(
    select
        main_id,
        wm_concat(', ', keyword) as keyword
    from
        secods.odl_rcp_aliyun_case_keyword
    where
        ds='20150525'
    group by
        main_id
)c
on a.id=c.main_id
where
    a.ds='20150525'
    and b.ds='20150525';
----------------------------------------
这样的写法会造成b表暴力扫描,建议改成这样的写法:
select
    a.id,  
    a.status,
    b.url,
    b.data_owner,
    c.keyword
from
    (
    select
    id,  
    status
    from
    secods.odl_rcp_aliyun_case_main
    where  ds='20150525'
    ) a
left outer join
    (select
     main_id
     url,
     data_owner
     from 
     secods.odl_rcp_aliyun_url 
     where ds='20150525';
    )b
on a.id=b.main_id
left outer join(
    select
        main_id,
        wm_concat(', ', keyword) as keyword
    from
        secods.odl_rcp_aliyun_case_keyword
    where
        ds='20150525'
    group by
        main_id
)c
on a.id=c.main_id 
----------------------------------------------------------------
sql的执行顺序:
FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE or WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值