查看: 2698|回复: 5

sql 优化 其中一全表扫描cost怎么都调整下不去

[复制链接]
论坛徽章:
0
发表于 2009-8-25 16:39 | 显示全部楼层 |阅读模式
select count(*)
  from lcprem a, LCPol b
where a.polno = b.polno
   and a.PaytoDate >= '2009-08-01'
   and a.PaytoDate <= '2009-08-31'
   and a.PaytoDate < a.PayEndDate
   and a.payintv = 12
   and a.paytimes = 1
   and b.appflag = '1'
   and (b.salechnl in ('02', '10') or
       (b.salechnl in ('03', '05', '06', '08', '09') and
       b.polno in (select polno from LAAgentComOrphanPol)))
   and b.PolNo = b.MainPolNo
   and length(trim(a.dutycode)) = 6
   and length(trim(a.payplancode)) = 6
   and exists (select 1
          from lcduty c
         where b.contno = c.contno
           and (c.FreeFlag != '1' or c.FreeFlag is null))
   and b.conttype = '1'
   and not exists (select 1
          from lcconthangupstate x, LLReportReason y
         where x.hangupno = y.RpNo
           and substr(y.ReasonCode, 2) = '02'
           and x.contno = b.contno
        union
        select 1
          from llclaimpolicy x, LLAppClaimReason y
         where x.clmno = y.CaseNo
           and substr(y.ReasonCode, 2) = '02'
           and x.contno = b.contno)
   and not exists
(select 1
          from lrascription
         where contno = a.contno
           and ascriptiondate =
               substr(to_date('2009-08-01', 'yyyy-mm-dd'), 0, 7) || '-01'
        union
        select 1
          from lrascriptionb
         where contno = a.contno
           and ascriptiondate =
               substr(to_date('2009-08-01', 'yyyy-mm-dd'), 0, 7) || '-01')
   and (exists (select '1'
                  from LRAdimAscription
                 where contno = b.contno
                   and agentcode = '8613014999') or exists
        (select '1'
           from lacommision c
          where contno = b.contno
            and agentcode = '8613014999'
            and c.mainpolno = c.polno
            and c.payyear = 0
            and c.commdire = '1'
            and c.transmoney > 0))
   and b.ManageCom like '8613%'
ddddddd.JPG
论坛徽章:
15
生肖徽章2007版:羊
日期:2009-02-10 14:52:362013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-12-17 17:16:242011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-30 14:20:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010年世界杯参赛球队:尼日利亚
日期:2010-07-15 14:53:432010年世界杯参赛球队:美国
日期:2010-04-29 22:55:002010新春纪念徽章
日期:2010-03-01 11:08:27生肖徽章2007版:龙
日期:2009-07-30 10:45:52
发表于 2009-8-25 16:44 | 显示全部楼层
count('x')

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2009-8-25 16:55 | 显示全部楼层

没关系

lcpol 涉及的都有index
and (b.salechnl in ('02', '10') or
       (b.salechnl in ('03', '05', '06', '08', '09') and
       b.polno in (select polno from LAAgentComOrphanPol)))
   and b.PolNo = b.MainPolNo
   and length(trim(a.dutycode)) = 6
   and length(trim(a.payplancode)) = 6
   and

哪位有idea 能避免accessfull lcpol

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2009-8-25 17:02 | 显示全部楼层

改造后 6秒就出来了

select z.polno from LRAdimAscription z
                 where z.polno=z.mainpolno
                 and z.agentcode = '8613014999'
                 and z.ascriptiondate =
               substr(to_date('2009-08-01', 'yyyy-mm-dd'), 0, 7) || '-01'
and exists
(
  select 1
  from lcprem a, LCPol b
where a.polno = b.polno
   and a.PaytoDate >= '2009-08-01'
   and a.PaytoDate <= '2009-08-31'
   and a.PaytoDate < a.PayEndDate
   and a.payintv = 12
   and a.paytimes = 1
   and b.appflag = '1'
   and (b.salechnl in ('02', '10') or
       (b.salechnl in ('03', '05', '06', '08', '09') and
       b.polno in (select polno from LAAgentComOrphanPol)))
   and b.PolNo = b.MainPolNo
   and length(trim(a.dutycode)) = 6
   and length(trim(a.payplancode)) = 6
   and (a.FreeFlag != '1' or a.FreeFlag is null)
   and b.conttype = '1'
   and a.contno=z.contno and b.contno=z.contno
   )
   and not exists (select 1
          from lcconthangupstate x, LLReportReason y
         where x.hangupno = y.RpNo
           and substr(y.ReasonCode, 2) = '02'
           and x.contno = z.contno
        union
        select 1
          from llclaimpolicy x, LLAppClaimReason y
         where x.clmno = y.CaseNo
           and substr(y.ReasonCode, 2) = '02'
           and x.contno = z.contno)
   and not exists
(select 1
          from lrascription
         where contno = z.contno
           and ascriptiondate =
               substr(to_date('2009-08-01', 'yyyy-mm-dd'), 0, 7) || '-01'
        union
        select 1
          from lrascriptionb
         where contno = z.contno
           and ascriptiondate =
               substr(to_date('2009-08-01', 'yyyy-mm-dd'), 0, 7) || '-01')
   and z.ManageCom like '8613%'
   union
   select z.polno
           from lacommision z
          where agentcode = '8613014999'
            and z.mainpolno = z.polno
            and z.payintv=12
            and z.payyear = 0
            and z.commdire = '1'
            and z.transmoney > 0
   and exists
(
  select 1
  from lcprem a, LCPol b
where a.polno = b.polno
   and a.PaytoDate >= '2009-08-01'
   and a.PaytoDate <= '2009-08-31'
   and a.PaytoDate < a.PayEndDate
   and a.payintv = 12
   and a.paytimes = 1
   and b.appflag = '1'
   and (b.salechnl in ('02', '10') or
       (b.salechnl in ('03', '05', '06', '08', '09') and
       b.polno in (select polno from LAAgentComOrphanPol)))
   and b.PolNo = b.MainPolNo
   and length(trim(a.dutycode)) = 6
   and length(trim(a.payplancode)) = 6
   and (a.FreeFlag != '1' or a.FreeFlag is null)
   and b.conttype = '1'
   and a.contno=z.contno and b.contno=z.contno
   )
   and not exists (select 1
          from lcconthangupstate x, LLReportReason y
         where x.hangupno = y.RpNo
           and substr(y.ReasonCode, 2) = '02'
           and x.contno = z.contno
        union
        select 1
          from llclaimpolicy x, LLAppClaimReason y
         where x.clmno = y.CaseNo
           and substr(y.ReasonCode, 2) = '02'
           and x.contno = z.contno)
   and not exists
(select 1
          from lrascription
         where contno = z.contno
           and ascriptiondate =
               substr(to_date('2009-08-01', 'yyyy-mm-dd'), 0, 7) || '-01'
        union
        select 1
          from lrascriptionb
         where contno = z.contno
           and ascriptiondate =
               substr(to_date('2009-08-01', 'yyyy-mm-dd'), 0, 7) || '-01')
   and z.ManageCom like '8613%';

供大家参考

使用道具 举报

回复
论坛徽章:
5
生肖徽章:兔
日期:2007-09-26 12:34:32生肖徽章2007版:鸡
日期:2008-04-07 19:46:42授权会员
日期:2008-09-21 16:17:19生肖徽章2007版:兔
日期:2008-09-28 17:44:322009日食纪念
日期:2009-07-22 09:30:00
发表于 2009-8-25 17:06 | 显示全部楼层
b.appflag = '1'放在where后的第一个试试?或者加个hash hint试试

使用道具 举报

回复
论坛徽章:
5
生肖徽章:兔
日期:2007-09-26 12:34:32生肖徽章2007版:鸡
日期:2008-04-07 19:46:42授权会员
日期:2008-09-21 16:17:19生肖徽章2007版:兔
日期:2008-09-28 17:44:322009日食纪念
日期:2009-07-22 09:30:00
发表于 2009-8-25 17:08 | 显示全部楼层
晕,前面还有一句啊……

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表