我创建了一个函数索引,但是在查询时发现并没有用上此索引,就是用提示使用此索引,仍然没有使用到函数索引,
此函数索引名为:messagetabe_qqsj_f
在此列上建的另一个B树索引是:messagetabe_qqsj
创建函数索引语句是:
create index messagetable_qqsj_f on messagetable(to_char(qqsj,'yyyy-mm-dd'))
create index messagetable_qqsj on messagetable(qqsj);
在创建函数索引前已授予用户权限:query_rewrite
以下是执行计划:
指定索引
SQL> select --+index(messagetable,messagetabe_qqsj_f)
  2  count(*) from messagetable where to_char(qqsj,'yyyy-mm-dd')='2002-01-01';
已用时间:  00: 00: 02.13
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=1 Card=1 Bytes=9
          )   1    0   SORT (AGGREGATE)
   2    1     INDEX (FULL SCAN) OF 'MESSAGETABLE_QQSJ' (NON-UNIQUE) (C
          ost=26 Card=15070 Bytes=135630)Statistics
----------------------------------------------------------
          8  recursive calls
          0  db block gets
       1606  consistent gets
          0  physical reads
          0  redo size
        365  bytes sent via SQL*Net to client
        425  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          1  rows processed
SQL>
执行计划显示虽然指定的是函数索引,但是使用的还是在此列的B树索引。
请大侠指点,先谢了!!!