日期:2014-05-17 浏览次数:22996 次
SELECT T4.BUSSELFNO,
       T4.LINENAME,
       T4.BUSCLASS,
       T4.DRIVERACODE,
       T4.DRIVERANAME,
       T4.FIRSTTIME,
       TO_CHAR('') AS DRIVERBCODE,
       TO_CHAR('') AS DRIVERBNAME,
       TO_DATE('', 'YYYY-MM-DD HH24:MI:SS') AS CHANGETIME
  FROM PI_BUSINFO T1
  LEFT JOIN V_PI_DISPATCHPLAN_CCY T4
    ON T1.BUSSELFNO = T4.BUSSELFNO
 WHERE T1.AREAOWNER = 0
   AND T1.BUSSTATUS <> 0
   AND SYSDATE > T4.FIRSTTIME
      --AND T4.BUSSELFNO NOT IN
   AND NOT EXISTS
 (SELECT T6.BUSSELFNO
          FROM V_PI_POSINOUT_CCY T6
         WHERE T6.ENTERTIME BETWEEN
               TO_DATE(TO_CHAR(SYSDATE, 'yyyy-mm-dd') || ' ' || '00:00:00',
                       'yyyy-mm-dd hh24:mi:ss') AND
               TO_DATE(TO_CHAR(SYSDATE, 'yyyy-mm-dd') || ' ' || '23:59:59',
                       'yyyy-mm-dd hh24:mi:ss')
           AND T6.BUSSELFNO = T4.BUSSELFNO
        UNION ALL
        SELECT T7.BUSID
          FROM PI_INOUT T7
         WHERE T7.ENTERTIME BETWEEN
               TO_DATE(TO_CHAR(SYSDATE, 'yyyy-mm-dd') || ' ' || '00:00:00',
                       'yyyy-mm-dd hh24:mi:ss') AND
               TO_DATE(TO_CHAR(SYSDATE, 'yyyy-mm-dd') || ' ' || '23:59:59',
                       'yyyy-mm-dd hh24:mi:ss')
           AND T7.BUSSELFNO = T4.BUSSELFNO);
------解决方案--------------------
补充一点:在T6和T7的 BUSSELFNO 字段上建一个索引。
另外:V_PI_POSINOUT_CCY 如果是个视图的话,建议先把数据查出来放到临时表中,建立索引再查询临时表的数据。