linlun2010 2012-10-17 08:57
浏览 362
已采纳

sql优化 两个表连接 怎么优化?

select a.id, a.wlbm, a.wlpm, a.jb, b.gysmc, b.mdm, b.ly
from gwdc_wgzx_wldwz a,
(select t.gysmc, t.mdm, t.ly, t.wlz || '%' as wlzwhere
from gwdc_wgzx_query t
where t.wlz is not null
and t.wlbm is null
and t.ly != '市场准入'
and nvl(t.qyxq, 0) <= '20121017'
and nvl(t.zyxq, 0) >= '20121017') b
where a.wlpm like b.wlzwhere

  • 写回答

3条回答 默认 最新

  • jinnianshilongnian 2012-10-17 13:02
    关注

    1、is null / is not null 在有些情况即使建索引 也是不能走索引的 可以通过一些技术解决这个

    1) 不保存null 2)建伪符合索引 如(wlz, '0')

    2、 t.ly != '市场准入' 也是不走索引的

    3、只能靠如下:
    and nvl(t.qyxq, 0) <= '20121017'
    and nvl(t.zyxq, 0) >= '20121017'
    但是你在需要处理的列上使用了函数 如果没有函数索引也是不走索引的。

    可以考虑直接(此处建议存数字 而不是字符串) 不用考虑null(走索引时 默认null是不建索引的)
    t.qyxq <='20121017'
    and t.zyxq>= '20121017'

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部