Oracle数据库中的timestamp和date类型

  • 来源: 赛迪网 作者: 若水   2008-05-08/01:31
  • 问题:where timestamp>date 这种子句是走索引吗?
    下面我们针对这个问题做一个试验:
    c:>sqlplus / as sysdba
    sys@EOS >create table test as select table_name,to_timestamp(last_analyzed) date_test from dba_tables;
    表已创建。
    sys@EOS> create index idx_test_date on test (date_test);
    索引已创建。
    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');
    执行计划
    ----------------------------------------------------------
    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
    统计信息
    ----------------------------------------------------------
    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类型一般很少用,建议大家在产品里面所有的date数据类型全部改为timestamp。

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多