完整SQL如下: select /*+rule*/ mw_app.mwt_ud_lp_sheetindex.OBJ_ID, SHEETID, PATTERNNAME, MACHINE, DEPTNAME, LEADER, SIGNISSUE, SHEETNAME, PAGENUM, STATUSNAME, PERMITER, PERMITSTARTTIME, ENDTIME, UPDATEINFO, UNQUALIFIEDREASON, SHEETTYPENAME from mw_app.mwt_ud_lp_sheetindex, mw_app.mwt_ud_lp_PATTERNINFO, mw_app.mwt_ud_lp_STATUSMSG where mw_app.mwt_ud_lp_sheetindex.PATTERNID = mw_app.mwt_ud_lp_PATTERNINFO.PATTERNID and mw_app.mwt_ud_lp_SHEETINDEX.SHEETSTATUSID = mw_app.mwt_ud_lp_STATUSMSG.STATUSID and mw_app.mwt_ud_lp_PATTERNINFO.moduletype = 1 and SHEETTYPE = 1 and ismainsheet = 1 and (deptid in (select depid from mw_app.mwv_ud_lp_department dep start with depid in ('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168') connect by prior dep.DEPID = dep.DEPENDCODE) or (mw_app.mwt_ud_lp_sheetindex.STATIONID in (select distinct t2.stationid from mw_app.MWT_UD_SBD_BDZ t1, mw_app.mwt_ud_lp_wd_stationinfo t2 WHERE t1.obj_id = t2.obj_id and t1.YXBM in (select depid from mw_app.mwv_ud_lp_department start with depid in ('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168') connect by prior depid = dependcode))) or (mw_app.mwt_ud_lp_sheetindex.STATIONID in (select distinct t2.stationid from mw_app.MWT_UD_SBD_XLXX t1, mw_app.mwt_ud_lp_wd_stationinfo t2 WHERE t1.obj_id = t2.obj_id and t1.whbz in (select depid from mw_app.mwv_ud_lp_department start with depid in ('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168') connect by prior depid = dependcode)))) and sheettype <> 2 and sheettype <> 7 and ismainsheet = 1 and (ELECGRIDTYPE = 0 or ELECGRIDTYPE = 2) order by to_number(substr(replace((case when planstarttime is null then '0' else planstarttime end), '-', ''), 0, 8)) desc
1、由于对你的表结构、索引信息都不知道,这种SQL优化不好做啊! 2、建议将子查询的结构是否可以插入临时表。 3、对rule规则的使用:sql语句较长的情况下,可以省点SQL解析的时间,但是这样也会改变你的执行计划,不知道你这样做值不值啊? 4、我看见自查中还含有distinct 、in 、or 、<>、order by to_number(substr(replace((case when planstarttime is null then '0' else planstarttime end), '-', ''), 0, 8)) desc 5、最后我想问下:你的SQL能执行吗? select /*+rule*/ mw_app.mwt_ud_lp_sheetindex.OBJ_ID, SHEETID, PATTERNNAME, MACHINE, DEPTNAME, LEADER, SIGNISSUE, SHEETNAME, PAGENUM, STATUSNAME, PERMITER, PERMITSTARTTIME, ENDTIME, UPDATEINFO, UNQUALIFIEDREASON, SHEETTYPENAME from mw_app.mwt_ud_lp_sheetindex, mw_app.mwt_ud_lp_PATTERNINFO, mw_app.mwt_ud_lp_STATUSMSG where mw_app.mwt_ud_lp_sheetindex.PATTERNID = mw_app.mwt_ud_lp_PATTERNINFO.PATTERNID and mw_app.mwt_ud_lp_SHEETINDEX.SHEETSTATUSID = mw_app.mwt_ud_lp_STATUSMSG.STATUSID and mw_app.mwt_ud_lp_PATTERNINFO.moduletype = 1 and SHEETTYPE = 1 and ismainsheet = 1 and (deptid in (select depid from mw_app.mwv_ud_lp_department dep start with depid in ('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168') connect by prior dep.DEPID = dep.DEPENDCODE) or (mw_app.mwt_ud_lp_sheetindex.STATIONID in select distinct t2.stationid from mw_app.MWT_UD_SBD_BDZ t1, mw_app.mwt_ud_lp_wd_stationinfo t2 WHERE t1.obj_id = t2.obj_id and t1.YXBM in (select depid from mw_app.mwv_ud_lp_department start with depid in ('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168') connect by prior depid = dependcode))) or (mw_app.mwt_ud_lp_sheetindex.STATIONID in (select distinct t2.stationid from mw_app.MWT_UD_SBD_XLXX t1, mw_app.mwt_ud_lp_wd_stationinfo t2 WHERE t1.obj_id = t2.obj_id and t1.whbz in (select depid from mw_app.mwv_ud_lp_department start with depid in ('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168') connect by prior depid = dependcode)))) and sheettype <> 2 and sheettype <> 7 and ismainsheet = 1 and (ELECGRIDTYPE = 0 or ELECGRIDTYPE = 2) order by to_number(substr(replace((case when planstarttime is null then '0' else planstarttime end), '-', ''), 0, 8)) desc 红色的部分能够的去吗?
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
select /*+rule*/
mw_app.mwt_ud_lp_sheetindex.OBJ_ID,
SHEETID,
PATTERNNAME,
MACHINE,
DEPTNAME,
LEADER,
SIGNISSUE,
SHEETNAME,
PAGENUM,
STATUSNAME,
PERMITER,
PERMITSTARTTIME,
ENDTIME,
UPDATEINFO,
UNQUALIFIEDREASON,
SHEETTYPENAME
from mw_app.mwt_ud_lp_sheetindex,
mw_app.mwt_ud_lp_PATTERNINFO,
mw_app.mwt_ud_lp_STATUSMSG
where mw_app.mwt_ud_lp_sheetindex.PATTERNID =
mw_app.mwt_ud_lp_PATTERNINFO.PATTERNID
and mw_app.mwt_ud_lp_SHEETINDEX.SHEETSTATUSID =
mw_app.mwt_ud_lp_STATUSMSG.STATUSID
and mw_app.mwt_ud_lp_PATTERNINFO.moduletype = 1
and SHEETTYPE = 1
and ismainsheet = 1
and (deptid in
(select depid
from mw_app.mwv_ud_lp_department dep
start with depid in ('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168')
connect by prior dep.DEPID = dep.DEPENDCODE) or
(mw_app.mwt_ud_lp_sheetindex.STATIONID in
(select distinct t2.stationid
from mw_app.MWT_UD_SBD_BDZ t1,
mw_app.mwt_ud_lp_wd_stationinfo t2
WHERE t1.obj_id = t2.obj_id
and t1.YXBM in (select depid
from mw_app.mwv_ud_lp_department
start with depid in
('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168')
connect by prior depid = dependcode))) or
(mw_app.mwt_ud_lp_sheetindex.STATIONID in
(select distinct t2.stationid
from mw_app.MWT_UD_SBD_XLXX t1,
mw_app.mwt_ud_lp_wd_stationinfo t2
WHERE t1.obj_id = t2.obj_id
and t1.whbz in (select depid
from mw_app.mwv_ud_lp_department
start with depid in
('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168')
connect by prior depid = dependcode))))
and sheettype <> 2
and sheettype <> 7
and ismainsheet = 1
and (ELECGRIDTYPE = 0 or ELECGRIDTYPE = 2)
order by to_number(substr(replace((case
when planstarttime is null then
'0'
else
planstarttime
end),
'-',
''),
0,
8)) desc
2、建议将子查询的结构是否可以插入临时表。
3、对rule规则的使用:sql语句较长的情况下,可以省点SQL解析的时间,但是这样也会改变你的执行计划,不知道你这样做值不值啊?
4、我看见自查中还含有distinct 、in 、or 、<>、order by to_number(substr(replace((case when planstarttime is null then '0' else planstarttime end), '-', ''), 0, 8)) desc
5、最后我想问下:你的SQL能执行吗?
select /*+rule*/
mw_app.mwt_ud_lp_sheetindex.OBJ_ID,
SHEETID,
PATTERNNAME,
MACHINE,
DEPTNAME,
LEADER,
SIGNISSUE,
SHEETNAME,
PAGENUM,
STATUSNAME,
PERMITER,
PERMITSTARTTIME,
ENDTIME,
UPDATEINFO,
UNQUALIFIEDREASON,
SHEETTYPENAME
from mw_app.mwt_ud_lp_sheetindex,
mw_app.mwt_ud_lp_PATTERNINFO,
mw_app.mwt_ud_lp_STATUSMSG
where mw_app.mwt_ud_lp_sheetindex.PATTERNID =
mw_app.mwt_ud_lp_PATTERNINFO.PATTERNID
and mw_app.mwt_ud_lp_SHEETINDEX.SHEETSTATUSID =
mw_app.mwt_ud_lp_STATUSMSG.STATUSID
and mw_app.mwt_ud_lp_PATTERNINFO.moduletype = 1
and SHEETTYPE = 1
and ismainsheet = 1 and (deptid in (select depid
from mw_app.mwv_ud_lp_department dep
start with depid in
('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168')
connect by prior dep.DEPID =
dep.DEPENDCODE) or (mw_app.mwt_ud_lp_sheetindex.STATIONID in
select distinct t2.stationid
from mw_app.MWT_UD_SBD_BDZ t1, mw_app.mwt_ud_lp_wd_stationinfo t2
WHERE t1.obj_id = t2.obj_id
and t1.YXBM in (select depid
from mw_app.mwv_ud_lp_department
start with depid in
('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168')
connect by prior depid = dependcode))) or (mw_app.mwt_ud_lp_sheetindex.STATIONID in (select distinct t2.stationid
from mw_app.MWT_UD_SBD_XLXX t1,
mw_app.mwt_ud_lp_wd_stationinfo t2
WHERE t1.obj_id =
t2.obj_id
and t1.whbz in
(select depid
from mw_app.mwv_ud_lp_department
start with depid in
('63EBEC8E-E766-40D7-ACF4-FEA945102112-00168')
connect by prior
depid =
dependcode)))) and sheettype <> 2 and sheettype <> 7 and ismainsheet = 1 and (ELECGRIDTYPE = 0 or ELECGRIDTYPE = 2)
order by to_number(substr(replace((case
when planstarttime is null then
'0'
else
planstarttime
end),
'-',
''),
0,
8)) desc
红色的部分能够的去吗?