为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】:
因为视图语句查询慢,在视图中写OPTIMIZER_OR_NBEXP(2),执行计划没变
1 创建视图
create or REPLACE view v_test as
select /+ OPTIMIZER_OR_NBEXP(2)*/ * from BBB
where
(name like '%DD' and paydate<sysdate-365)
or
(name like 'DD%' and paydate>sysdate-365)
;
2执行计划
select * from v_test
1 #NSET2: [72, 22185, 121]
2 #PRJT2: [72, 22185, 121]; exp_num(4), is_atom(FALSE)
3 #PRJT2: [72, 22185, 121]; exp_num(4), is_atom(FALSE)
4 #UNION FOR OR2: [72, 22185, 121]; key_num(1), outer_join(-)
5 #SLCT2: [1, 21, 121]; BBB.PAYDATE > var7
6 #BLKUP2: [1, 196, 121]; IDX_BBB01(BBB)
7 #SSEK2: [1, 196, 121]; scan_type(ASC), IDX_BBB01(BBB), scan_range[('DE',max),('DD',max))
8 #SLCT2: [69, 22163, 121]; (BBB.NAME LIKE '%DD' AND BBB.PAYDATE < var10)
9 #CSCN2: [69, 499900, 121]; INDEX33557030(BBB)
3 sql单独查询时,hint能生效
select /+ OPTIMIZER_OR_NBEXP(2)/ * from BBB
where
(name like '%DD' and paydate<sysdate-365)
or
(name like 'DD%' and paydate>sysdate-365)
1 #NSET2: [69, 48740, 121]
2 #PRJT2: [69, 48740, 121]; exp_num(4), is_atom(FALSE)
3 #SLCT2: [69, 48740, 121]; ((BBB.NAME >= 'DD' AND BBB.NAME < 'DE' AND BBB.PAYDATE > var5) OR (BBB.NAME LIKE '%DD' AND BBB.PAYDATE < var5))
4 #CSCN2: [69, 499900, 121]; INDEX33557030(BBB)
可以试试清理一下执行计划缓存,再重新编译一下