linlun2010 2012-10-17 16: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 21: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条)

报告相同问题?

悬赏问题

  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了