zoukankan      html  css  js  c++  java
  • 自定义函数引发的性能问题

    ---执行1次
    select count(1)
      from LOAN_DUEBILLDATA bd
      left join LOAN_CONTRACTDATA bc
        on bd.RelativeSerialNo2 = bc.SerialNo
     where nvl(bd.ActualMaturity, bd.Maturity) <= '2014/08/06'
       and nvl(bd.ActualMaturity, bd.Maturity) >= '2014/07/07'
       and (bd.FinishDate is null or bd.FinishDate = '')
       and (bc.ManageUserID = '00717' or
            getCustomerManager(bc.CustomerId) = '00717')
    ----返回4条记录
    
    ---getCustomerManager函数里的sql执行3619次
    SELECT USERID FROM CUSTOMER_BELONG WHERE CUSTOMERID = :B1 AND BELONGATTRIBUTE='1'
    
    
    select  count(1)
      from LOAN_DUEBILLDATA bd
      left join LOAN_CONTRACTDATA bc
        on bd.RelativeSerialNo2 = bc.SerialNo
     where nvl(bd.ActualMaturity, bd.Maturity) <= '2014/08/06'
       and nvl(bd.ActualMaturity, bd.Maturity) >= '2014/07/07'
       and (bd.FinishDate is null or bd.FinishDate = '')
       and (bc.ManageUserID = '00717' or
            getCustomerManager(bc.CustomerId) = '00717');
    
    
    初步改写为:
    select count(1)
      from LOAN_DUEBILLDATA bd, LOAN_CONTRACTDATA bc, (select CustomerId FROM CUSTOMER_BELONG WHERE BELONGATTRIBUTE='1') be
     where bd.RelativeSerialNo2 = bc.SerialNo(+)
       and nvl(bd.ActualMaturity, bd.Maturity) <= '2014/08/06'
       and nvl(bd.ActualMaturity, bd.Maturity) >= '2014/07/07'
       and (bd.FinishDate is null or bd.FinishDate = '')
       and be.CustomerId = bc.CustomerId
       and (bc.ManageUserID = '00717' or be.customerid = '00717')
    

  • 相关阅读:
    TCP/IP协议总结(马士兵教育)
    socket和TCP/IP三次握手的对应关系
    VMWare中添加多个linux节点
    试题分析
    c#数据筛选和排序
    实现Windows程序的数据绑定
    实现Windows程序的数据更新
    使用ListView控件展示数据
    构建布局良好的Windows程序
    初识Windows程序
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352226.html
Copyright © 2011-2022 走看看