以下语句执行时长在1秒以内
select T1.STAFF_ID STAFF_ID,
               T2.STAFF_NO STAFF_NO,
               T2.STAFF_NAME STAFF_NAME,
               T4.DEPT_ID DEPT_ID,
               T4.DEPT_NAME DEPT_NAME,
               T1.CALLER CALLER,
               T1.CALLEE CALLEE,
               decode(sign(T1.CALL_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      to_char(T1.CALL_TIME, 'yyyy/mm/dd hh24:mi:ss'),
                      '--') CALL_TIME,
               decode(sign(T1.ANS_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      to_char(T1.ANS_TIME, 'yyyy/mm/dd hh24:mi:ss'),
                      '--') ANS_TIME,
               decode(sign(T1.CLR_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      to_char(T1.CLR_TIME, 'yyyy/mm/dd hh24:mi:ss'),
                      '--') CLR_TIME,
               decode(sign(T1.ANS_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      trunc((T1.CLR_TIME - T1.ANS_TIME) * 86400),
                      0) DURATION,
               T3.CALL_END_REASON_ID CALL_END_REASON_ID,
               T3.CALL_END_REASON CALL_END_REASON
          from (select ASSOCIATE_MERGE_ID,
                       CALLER_USER_TYPE,
                       CALL_ID,
                       CALL_SEQ,
                       NODE_ID,
                       TERM_ID,
                       TERM_TYPE,
                       STAFF_ID,
                       CALL_TIME,
                       DIRECTION,
                       JOIN_MODE,
                       PRELINK_TIME,
                       RELEASE_TIME,
                       IAI_TIME,
                       ACM_TIME,
                       ANS_TIME,
                       CLR_TIME,
                       PRIMARY_CALLER,
                       PRIMARY_CALLEE,
                       CALLER,
                       CALLEE,
                       FINISH_REASON,
                       CALL_TYPE,
                       QUEUE_START_TIME,
                       QUEUE_FINISH_TIME,
                       ACD_NO
                  from DM_TERM_CALL_LOG_09
                 where DIRECTION = 1
                   and STAFF_ID in
                       ('110', '1145', '1151', '206', '2073', '2113', '22',
                        '252', '2735', '317', '321', '3433', '3434', '3435',
                        '421', '4393', '48', '51', '60')
                   and CALL_TIME >=
                       to_date('2007/9/10 10:44:53', 'yyyy/mm/dd HH24:MI:SS')
                   and CALL_TIME <=
                       to_date('2007/9/13 10:44:54', 'yyyy/mm/dd HH24:MI:SS')) T1,
               ECC_STAFF_MANAGER T2,
               DM_CALL_END_REASON T3,
               ECC_DEPT_MANAGER T4
         where T1.STAFF_ID = T2.STAFF_ID
           and T2.DEPT_ID = T4.DEPT_ID
           and T1.FINISH_REASON = T3.CALL_END_REASON_ID但如果在语句的外层加上一个count(*),执行效率就狂低,执行时间在10秒以上
select count(*)
  from (select T1.STAFF_ID STAFF_ID,
               T2.STAFF_NO STAFF_NO,
               T2.STAFF_NAME STAFF_NAME,
               T4.DEPT_ID DEPT_ID,
               T4.DEPT_NAME DEPT_NAME,
               T1.CALLER CALLER,
               T1.CALLEE CALLEE,
               decode(sign(T1.CALL_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      to_char(T1.CALL_TIME, 'yyyy/mm/dd hh24:mi:ss'),
                      '--') CALL_TIME,
               decode(sign(T1.ANS_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      to_char(T1.ANS_TIME, 'yyyy/mm/dd hh24:mi:ss'),
                      '--') ANS_TIME,
               decode(sign(T1.CLR_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      to_char(T1.CLR_TIME, 'yyyy/mm/dd hh24:mi:ss'),
                      '--') CLR_TIME,
               decode(sign(T1.ANS_TIME - to_date('20050101', 'yyyymmdd')),
                      1,
                      trunc((T1.CLR_TIME - T1.ANS_TIME) * 86400),
                      0) DURATION,
               T3.CALL_END_REASON_ID CALL_END_REASON_ID,
               T3.CALL_END_REASON CALL_END_REASON
          from (select ASSOCIATE_MERGE_ID,
                       CALLER_USER_TYPE,
                       CALL_ID,
                       CALL_SEQ,
                       NODE_ID,
                       TERM_ID,
                       TERM_TYPE,
                       STAFF_ID,
                       CALL_TIME,
                       DIRECTION,
                       JOIN_MODE,
                       PRELINK_TIME,
                       RELEASE_TIME,
                       IAI_TIME,
                       ACM_TIME,
                       ANS_TIME,
                       CLR_TIME,
                       PRIMARY_CALLER,
                       PRIMARY_CALLEE,
                       CALLER,
                       CALLEE,
                       FINISH_REASON,
                       CALL_TYPE,
                       QUEUE_START_TIME,
                       QUEUE_FINISH_TIME,
                       ACD_NO
                  from DM_TERM_CALL_LOG_09
                 where DIRECTION = 1
                   and STAFF_ID in
                       ('110', '1145', '1151', '206', '2073', '2113', '22',
                        '252', '2735', '317', '321', '3433', '3434', '3435',
                        '421', '4393', '48', '51', '60')
                   and CALL_TIME >=
                       to_date('2007/9/10 10:44:53', 'yyyy/mm/dd HH24:MI:SS')
                   and CALL_TIME <=
                       to_date('2007/9/13 10:44:54', 'yyyy/mm/dd HH24:MI:SS')) T1,
               ECC_STAFF_MANAGER T2,
               DM_CALL_END_REASON T3,
               ECC_DEPT_MANAGER T4
         where T1.STAFF_ID = T2.STAFF_ID
           and T2.DEPT_ID = T4.DEPT_ID
           and T1.FINISH_REASON = T3.CALL_END_REASON_ID)
大家有遇到这种情况吗?有什么处理方式呀?