这样的多表查询语句,还能再优化吗?在线等答案

happy398182130 2011-11-28 05:13:34
select   b.prtno, x.name, b.contno  
from lcaddress a, lccont b, lcinsured x
where b.conttype = '1' and b.appflag = '1' and b.contno = x.contno
and x.relationtoappnt != '00' and a.customerno = x.insuredno and x.addressno = a.addressno
and a.customerno != '' and a.postaladdress = '' and a.customerno != '0000563490'
and (a.mobile = '130' or a.phone = '130' or a.homephone = '130' or a.companyphone = '130' )
...全文
138 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oO寒枫Oo 2011-11-29
  • 打赏
  • 举报
回复
如果是 oracle的 话 a.postaladdress = '' a.postaladdress <> ''这种条件恒等于假 是无法查出数据的

select b.prtno, x.name, b.contno
from lcaddress a, lccont b, lcinsured x
where b.contno = x.contno and a.customerno = x.insuredno and x.addressno = a.addressno
and x.relationtoappnt != '00' and a.customerno != '0000563490' and a.mobile = '130'
and a.customerno != '' and a.postaladdress = ''
and b.conttype = '1' and b.appflag = '1'
union
select b.prtno, x.name, b.contno
from lcaddress a, lccont b, lcinsured x
where b.contno = x.contno and a.customerno = x.insuredno and x.addressno = a.addressno
and x.relationtoappnt != '00' and a.customerno != '0000563490' and a.phone = '130'
and a.customerno != '' and a.postaladdress = ''
and b.conttype = '1' and b.appflag = '1'
union
select b.prtno, x.name, b.contno
from lcaddress a, lccont b, lcinsured x
where b.contno = x.contno and a.customerno = x.insuredno and x.addressno = a.addressno
and x.relationtoappnt != '00' and a.customerno != '0000563490' and a.homephone = '130'
and a.customerno != '' and a.postaladdress = ''
and b.conttype = '1' and b.appflag = '1'
union
select b.prtno, x.name, b.contno
from lcaddress a, lccont b, lcinsured x
where b.contno = x.contno and a.customerno = x.insuredno and x.addressno = a.addressno
and x.relationtoappnt != '00' and a.customerno != '0000563490' and a.companyphone = '130'
and a.customerno != '' and a.postaladdress = ''
and b.conttype = '1' and b.appflag = '1'
programmerxiaocai 2011-11-29
  • 打赏
  • 举报
回复
b.conttype = '1' and b.appflag = '1' 不管怎样,你应该把这样的语句放在最后,先过滤掉一部分数据。
oO寒枫Oo 2011-11-29
  • 打赏
  • 举报
回复
你这个语句不是 oracle的吧。
overtime996 2011-11-29
  • 打赏
  • 举报
回复
在SQL*PLUS中打开AUTOTRACE:
SET AUTOTRACE ON
来查看你语句的消耗,这样的话就可以自己优化了吧~~
tianhxk 2011-11-28
  • 打赏
  • 举报
回复
贴出表结构、索引、数据量、及oracle分析计划!
EastHoo 2011-11-28
  • 打赏
  • 举报
回复
帮你顶顶
表面上看不出需要什么优化
毕竟不了解3个表的结构和数据量情况
happy398182130 2011-11-28
  • 打赏
  • 举报
回复
大家帮个忙~~sql优化优化啊!!

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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