首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle 建立的索引未生效,该如何处理

2011-12-31 
oracle 建立的索引未生效我在一张目前存储了50多万条数据的表,应该该表经常要做查询,然后我在该表上对该表

oracle 建立的索引未生效
我在一张目前存储了50多万条数据的表,
应该该表经常要做查询,然后我在该表上对该表的d_date字段建了个索引

可是今天发现在执行 select * from 该表 where d_date = '2010-12-31'
语句的执行计划的时候,显示得始终是 "TABLE ACCESS FULL",索引始终没有生效,
查询时间较长啊 .

然后我用alter 语句 rebuild下该索引,还是没有生效...最终很郁闷.

但是加上强制执行索引的条件索引才生效(select /*+omdex(t,IDX_DDATE)*/) * FROM 该表 where t.d_date = '2010-12-31')

请求解决办法啊.




[解决办法]
是否使用索引,很大程度上由你的 sql 语句的 selectivity 来决定的。如果从 50 万条数据中 select 10 万条数据,当然不会使用索引。
[解决办法]
学习了 

使用强制索引
应该是select /*+index(a,index_name)*/ column_name from table where condition 吧
是不是你的强制索引写法有问题啊??


探讨
drop index 索引;
analyze table 表名 compute statistics;
ANALYZE TABLE 表名 COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table 表名 compute statistics for table for all indexes for all indexed column……

热点排行