把a.RESULT = 'DELIVRD'放到where的后面
我记得sql在执行的时候and条件越精确匹配筛选效率越高。

解决方案 »

  1.   

    特别慢说明执行的是全表扫描.
    需要建立相关的索引,并分析这两个表.
    但不要以为建索引就快,比如在a.RESULT 上建立索引,但如果a.RESULT 的值大部分都是DELIVRD,则oracle还是会用全表扫描的.
      

  2.   

    SELECT  
        a.RESULT, 
        b.COMPANY, 
        b.DESTTERMID, 
        b.FEECODE, 
        b.FEETYPE, 
        b.MSGCONTENT, 
        b.MSGLEN, 
        b.SAVETIME, 
        b.SERVICEID, 
        b.SMID, 
        b.SRCTERMID, 
        b.STATUS 
        FROM OPERATOR.CNGP_SEND_RESULT a , OPERATOR.CNGP_SMS b    WHERE ( 
        ( a.DESTTERMID = b.desttermid ) 
        and 
        (a.msgid = b.smid)
        and 
        (a.RESULT = 'DELIVRD')
        ) View 慢表示上面的SQL 慢.
    看看执行计划.
      

  3.   

    其实这条SQL语句是没有任何可以优化的,可以试着在表上建立索引,提高查询速度
      

  4.   

    这个视图或说是查询已经没什么好看的了,并没有复杂的结构速度慢的可能有很多,初始参数设置不合理,索引没建或建的不好,查询中存在大字段的内容(或如varchar2(4000)的字段很多)等等
      

  5.   

    在sqlplus 下,执行select * from VIEW_CNGP_SMS;看速度如何?可能不是ORACLE的问题,是不是应用程序的问题?
      

  6.   

    不是,就是直接在oracle中打开view看内容,要等超过半分钟才出内容,而且没有记录,以前用sql server的视图很好用,没想到oracle中怎么会这样呢
      

  7.   

    同意 luxuezhu(卢冲) ( )
    其实这条SQL语句是没有任何可以优化的,可以试着在表上建立索引,提高查询速度先试着建索引看看吧