SELECT *
FROM MWV_XSXX
WHERE 1 = 1
AND YXBM IN (SELECT DS.OBJ_ID
FROM DEP DS
START WITH DS.OBJ_ID =
'xxx'
CONNECT BY PRIOR DS.OBJ_ID = DS.SJBM)
AND YXZT = '20501'
ORDER BY a, b, C
mwv_xsxx 一个视图 。里面用到了 很多表组成的。
条件中 DEP部门 递归查询。
这个效率很慢。30几秒,如果程序中把
YXBM IN (SELECT DS.OBJ_ID
FROM DEP DS
START WITH DS.OBJ_ID =
'xxx'
CONNECT BY PRIOR DS.OBJ_ID = DS.SJBM)
改成 字符串yxbm in('','','',.....) 这样就快 不过这个有1000 的限制,超过1000的时候 用in() or in()
这样也慢,
有没有好的优化方案,,,
FROM MWV_XSXX
WHERE 1 = 1
AND YXBM IN (SELECT DS.OBJ_ID
FROM DEP DS
START WITH DS.OBJ_ID =
'xxx'
CONNECT BY PRIOR DS.OBJ_ID = DS.SJBM)
AND YXZT = '20501'
ORDER BY a, b, C
mwv_xsxx 一个视图 。里面用到了 很多表组成的。
条件中 DEP部门 递归查询。
这个效率很慢。30几秒,如果程序中把
YXBM IN (SELECT DS.OBJ_ID
FROM DEP DS
START WITH DS.OBJ_ID =
'xxx'
CONNECT BY PRIOR DS.OBJ_ID = DS.SJBM)
改成 字符串yxbm in('','','',.....) 这样就快 不过这个有1000 的限制,超过1000的时候 用in() or in()
这样也慢,
有没有好的优化方案,,,
FROM MWV_XSXX x,
(SELECT DS.OBJ_ID
FROM DEP DS
START WITH DS.OBJ_ID = 'xxx'
CONNECT BY PRIOR DS.OBJ_ID = DS.SJBM) a
WHERE x.YXBM = a.OBJ_ID
AND x.YXZT = '20501'
ORDER BY a, b, C