Оптимизировать запрос TO_TIMESTAMP() в Oracle

Каждый раз, когда я выполняю этот запрос, выполнение занимает около 2 минут:

select * from CPOB_Monitoring_Dashboard
where  VOYAGE_STRT_DT >= TO_TIMESTAMP('2014-07-03 00:00:00.000','YYYY-MM-DD HH24:MI:SS.FF') 
and    VOYAGE_STRT_DT <= TO_TIMESTAMP('2018-07-03 00:00:00.000','YYYY-MM-DD HH24:MI:SS.FF')

Однако, если я изменю это, чтобы использовать TO_DATE вместо TO_TIMESTAMP это действительно быстро.Linq генерирует запрос, используя TOTIMESTAMP и я еще не нашел способ изменить это, чтобы использовать TO_DATEЕсть ли способ, которым я могу оптимизировать TOTIMESTAMP запрос?? Вот план выполнения для запроса с использованием TOTIMESTAMP:

PLAN_TABLE_OUTPUT                                                                                                                                                                                                                                                                                           
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 246273147

---------------------------------------------------------------------------------------------------------------------
| Id  | Operation                       | Name                      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |                           | 21842 |  4820K|       |  1336   (1)| 00:00:17 |
|   1 |  VIEW                           |  CPOB_Monitoring_Dashboard| 21842 |  4820K|       |  1336   (1)| 00:00:17 |
|   2 |   HASH UNIQUE                   |                           | 21842 |  3988K|  4384K|  1336   (1)| 00:00:17 |
|   3 |    NESTED LOOPS                 |                           | 21842 |  3988K|       |   442   (1)| 00:00:06 |
|   4 |     NESTED LOOPS                |                           |    47 |  7661 |       |   160   (1)| 00:00:02 |
|*  5 |      TABLE ACCESS FULL          |      VOYAGE_INFO          |    46 |  1012 |       |    68   (0)| 00:00:01 |
|   6 |      TABLE ACCESS BY INDEX ROWID|      PROCESS_CTRL         |     1 |   141 |       |     2   (0)| 00:00:01 |
|*  7 |       INDEX RANGE SCAN          |      VOYAGE_ID_IDX        |     1 |       |       |     1   (0)| 00:00:01 |
|*  8 |     INDEX RANGE SCAN            |      PLY_IDX2             |   467 | 11208 |       |     6   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
   5 - filter(INTERNAL_FUNCTION("CPVI"."VOYAGE_STRT_DT")>=TIMESTAMP' 2014-07-03 00:00:00.000000000' AND 
              INTERNAL_FUNCTION("CPVI"."VOYAGE_STRT_DT")<=TIMESTAMP' 2018-07-03 00:00:00.000000000')
   7 - access("CPC"."VOYAGE_ID"="CPVI"."VOYAGE_ID")
   8 - access("CPC"."BRAND_NAME"="CPOB"."BRAND_ID" AND "CPC"."SHIP_NAME"=""SHIP_NAME")
       filter("CPC"."SHIP_NAME"="CPOB"."SHIP_NAME")

24 rows selected. 

0 ответов

Другие вопросы по тегам