晕倒

ltrim(HPRICEDAY.corporationid)
ltrim(temptable.colname01)
ltrim(HPRICEDAY.planid)create基于function的index,并作分析

解决方案 »

  1.   

    把查询语句中的字符类型字段都给改成varchar2类型,然后去掉所有的rtrim和ltrim函数,试一下。
      

  2.   

    v02结果计算太复杂 ,时间太长,如果是存储过程,可以用一个变量作中
    介如:
    declare @ vo3
    declare @sqlstr
    vo3= train_price2+BUS_PRICE2+pipe_price2+ship_price2)/greatest(1,(least(train_price2,1)+least(bus_price2,1)+least(pipe_price2,1)+least(ship_price2,1))
    @sqlstr ='update temptable set (v01, v02)= (select store,' + @vo3 +.......
      

  3.   

    在WHERE 中用trim?不慢才怪,加上又是联合查询。建议你检查你的数据库设计。
      

  4.   

    我测试过了有没有trim没有什么影响,存储过程以前只需几秒最长也就10秒,这两天突然变成几分钟了,不知道是什么原因,表空间还有很大的剩余,并且是自动扩展的,最后解决的办法我把数据库重新安装了一下,把数据导进去,没有问题了,但还困惑,我弄ORACLE不长时间,不知道问题出在那里!
      

  5.   

    对字段使用函数会导致全表扫描,可以建立基于函数的索引
    例: create index
    xxx_aa
    on
      xxx
                  (upper(aa))
    使用不等于会导致索引失效。