oracle9i like查询优化

henanxiaomai 2011-05-11 02:04:33
select a.nbxh,a.zch,a.qymc,a.hy,a.djjg,a.gxdw,a.glph,a.qylxdl,b.zwwz zwwz from hz_qyhznr a,wl_jd b
where (a.zt='K' or a.zt='B') and a.nbxh=b.nbxh(+) and (b.nbxh is null or b.zwwz='Y')
and a.qymc like '%企业名称%';

//现在用PL/sql developer查询的时候卡在那里,结果一直出不来。如果没有加最后q.qymc的查询条件,结果可以出来。
表“hz_qyhznr”46万条记录,表“wl_jd”18万条,想要知道怎么去优化该查询,求高手赐教,谢谢
...全文
45 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoyoumou 2011-05-11
  • 打赏
  • 举报
回复
-- 可以先在表hz_qyhznr的zt字段创建索引:
CREATE index hz_qyhznr_inx1 on hz_qyhznr(zt);

-- 可以先在表wl_jd的nbxh、zwwz字段创建复合索引(最好按字段定义时的顺序去指定索引中的字段顺序)
CREATE index wl_jd_inx1 on wl_jd(nbxh,zwwz);

with t as(SELECT nbxh, zch, qymc, hy, djjg, gxdw, glph, qylxdl from hz_qyhznr WHERE zt='K' or zt='B'),
b as(SELECT zwwz from wl_jd where zwwz='Y' or nbxh is null),
a as(select nbxh, zch, qymc, hy, djjg, gxdw, glph, qylxdl from t WHERE qymc like '%企业名称%')
select a.nbxh,a.zch,a.qymc,a.hy,a.djjg,a.gxdw,a.glph,a.qylxdl,b.zwwz zwwz from a, b
where a.nbxh=b.nbxh(+);
tangren 2011-05-11
  • 打赏
  • 举报
回复
1、a.qymc like '%企业名称%'是不能用到索引的。
2、贴出执行计划。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧