分区剪裁合理性评估: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