+ -
当前位置:首页 → 问答吧 → 一个sql语句效率优化

一个sql语句效率优化

时间:2011-09-23

来源:互联网

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()
这样也慢,
有没有好的优化方案,,,

作者: xiaojinchao   发布时间: 2011-09-23

我知道where 1=1 是很有优化效果的

作者: fridayday2010   发布时间: 2011-09-23

贴一下执行计划看看!

作者: cosio   发布时间: 2011-09-23

SQL code
SELECT x.*
  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


作者: lisong770818   发布时间: 2011-09-23

试过了 没效果

作者: xiaojinchao   发布时间: 2011-09-23

热门下载

更多