Oracle數(shù)據(jù)庫中的timestamp和date類型
下面我們針對(duì)這個(gè)問題做一個(gè)試驗(yàn):
c:>sqlplus / as sysdba
sys@EOS >create table test as select table_name,to_timestamp(last_analyzed) date_test from dba_tables;
表已創(chuàng)建。
sys@EOS> create index idx_test_date on test (date_test);
索引已創(chuàng)建。
sys@EOS> desc test
名稱 是否為空? 類型
------------------------- -------- ----------------
TABLE_NAME NOT NULL VARCHAR2(30)
DATE_TEST TIMESTAMP(0)
sys@EOS> select date_test from test where date_test > TO_DATE('2007-11-5 00:00:00','yyyy-MM-dd HH24:mi:ss');
執(zhí)行計(jì)劃
----------------------------------------------------------
Plan hash value: 944171586
-------------------------------------------------------------------------------- --
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------- --
| 0 | SELECT STATEMENT | | 1 | 22 | 1 (0)| 00:00:01 |
|* 1 | INDEX RANGE SCAN| IDX_TEST_DATE | 1 | 22 | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------- --
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access('DATE_TEST'>TIMESTAMP'2007-11-05 00:00:00')
Note
-----
- dynamic sampling used for this statement
統(tǒng)計(jì)信息
----------------------------------------------------------
7 recursive calls
0 db block gets
18 consistent gets
0 physical reads
0 redo size
280 bytes sent via SQL*Net to client
374 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
0 rows processed
從上文中大家可以清楚地看到,timestamp>date情況下,走索引。
另外,date類型一般很少用,建議大家在產(chǎn)品里面所有的date數(shù)據(jù)類型全部改為timestamp。
