oracle 建立的索引未生效

BankingRegulatorLLM 2011-06-02 12:03:42
我在一张目前存储了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')

请求解决办法啊.


...全文
1008 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fendou1314 2011-06-11
  • 打赏
  • 举报
回复
学习了

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


[Quote=引用 14 楼 xiaoqi333 的回复:]
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……
[/Quote]
xiaoqi333 2011-06-11
  • 打赏
  • 举报
回复
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 columns;
create index 索引 on 表名(字段);
psufnxk2008 2011-06-10
  • 打赏
  • 举报
回复
收集一下信息再试一次。。
ruihuahan 2011-06-08
  • 打赏
  • 举报
回复
是否使用索引,很大程度上由你的 sql 语句的 selectivity 来决定的。如果从 50 万条数据中 select 10 万条数据,当然不会使用索引。
NLP爱好者 2011-06-07
  • 打赏
  • 举报
回复
1、你说 查询时间较长啊 是多长?

2、这个表是否操作频繁

3、这个表是否建立时间很久

如果很频繁,建立时间很久
建议你做一下表分析

analyze table xxxxx estimate statistics;--抽样分析,比较快,推荐

analyze table xxxxx compute statistics; --完成分析,比较慢,

4、建议你贴出执行计划!
5、说明你建立的索引是什么索引,是否出现隐式转换
狂想者 2011-06-07
  • 打赏
  • 举报
回复
学习了,顶一下!!
秋雨飘落 2011-06-06
  • 打赏
  • 举报
回复
检查你的数据类型,是否存在隐式转换。。。
khq1980 2011-06-05
  • 打赏
  • 举报
回复
你的索引字段已经进行了隐性转换,你可以建立函数索引
kaertiger 2011-06-03
  • 打赏
  • 举报
回复
引......无计划、无真相。
iqlife 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zftang 的回复:]
删除重建,
不要REBUILD
[/Quote]

1,同楼上
2:是不是走索引更慢,ORACLE的索引之前能走》?做了什么改变导致执行变化改变了?
秋雨飘落 2011-06-02
  • 打赏
  • 举报
回复
删除重建,
不要REBUILD
zjwssg 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tangren 的回复:]

不要认为走索引就快,d_date列索引的选择性如何?
加HINT强制走索引,查询快了吗?
把执行计划贴出来看看。无计划、无真相。
[/Quote]


d_date是什么字段类型啊
把加HINT前后的执行计划贴一下吧,谢谢
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tangren 的回复:]
不要认为走索引就快,d_date列索引的选择性如何?
加HINT强制走索引,查询快了吗?
把执行计划贴出来看看。无计划、无真相。
[/Quote]

这些表都都是100个字段左右,
再跑存储过程的时候, 不加索引基本都要上白秒,
加了索引都是十几秒,


我刚才又重新试了几张表,就前面建的索引也失效了,求正解!!!!
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zftang 的回复:]
删除重建,
不要REBUILD
[/Quote]

删除重建还是不行!
tangren 2011-06-02
  • 打赏
  • 举报
回复
不要认为走索引就快,d_date列索引的选择性如何?
加HINT强制走索引,查询快了吗?
把执行计划贴出来看看。无计划、无真相。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧