簡體   English   中英

Oracle to_date()在計划和時間執行上的差異

[英]Oracle to_date() difference in plan and time execution

我有兩個查詢

select *
 from T
 where DATE_OF between to_date ('01.02.2012 00:00:00', 'DD.MM.YYYY hh24:mi:ss')
                   and to_date ('01.02.2012 23:59:59','DD.MM.YYYY hh24:mi:ss')

解釋計划

SELECT STATEMENT  ALL_ROWSCost: 146,313  Bytes: 55,799,142  Cardinality: 150,402        
2 MAT_VIEW ACCESS BY INDEX ROWID MAT_VIEW T Cost: 146,313  Bytes: 55,799,142  Cardinality: 150,402      
    1 INDEX RANGE SCAN INDEX IND$T_05 Cost: 464  Cardinality: 150,402  

第二查詢

select *
from T
where DATE_OF >= to_date('201202','yyyyMM') 
  and DATE_OF <  to_date('201203','yyyyMM')

解釋計划

SELECT STATEMENT  ALL_ROWSCost: 4,242,836  Bytes: 1,618,120,952  Cardinality: 4,361,512         
2 MAT_VIEW ACCESS BY INDEX ROWID MAT_VIEW T Cost: 4,242,836  Bytes: 1,618,120,952  Cardinality: 4,361,512   
    1 INDEX RANGE SCAN INDEX IND$T_05 Cost: 13,368  Cardinality: 4,361,512  

索引ddl

CREATE INDEX IND$T_05 ON T(DATE_OF, TP)

DATE_OF是日期類型的列。 MVIEW未分區。

為什么查詢成本有如此大的差異?

這是因為第一個查詢掃描一天( 1 Feb 2012 ),第二個查詢掃描一個月( Feb 2012 )。

您想要一天還是一個月?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM