Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103666985
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-08 08:09:17

   来源:赛迪网    作者:Andy

问题: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。

阅读(413) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~