oracle 11g 有没有遇到过创建了索引无法使用的

53 天前
 iv8d

如题

起因

oracle 给子表创建了外键索引,使用外键单独查询子表数据,是全表查询没有走索引。使用 EXPLAN PLAN FOR 查看确定是全表查的。放了一晚上第二天发现又正常使用了索引查询。但是其他子表还是有没使用索引的问题。

需求

希望创建了索引后都能走该索引查询,别全表查太慢了。为什么创建好了索引还是全表查,但是个别子表放一晚又能使用索引查了呢(数据量大?子表 4kw 数据)。


另,只查子表,没有关联查询,条件就一个子表外键。 感谢

1021 次点击
所在节点    程序员
5 条回复
mamumu
53 天前
mysql 里对索引有个区分度的评价,评分高的才会采用,但是这个值并不是事实更新的,可以用 ANALYZE TABLE 让它立即更新。感觉 oracle 也有类似的机制吧
SoulSleep
53 天前
这种问题问 dba 就好...
Oracle 有定期的索引优化计划
另外可以强制绑定执行计划走索引
nash1000
53 天前
有多种可能不走索引,索引失效,表的统计信息不准确,或者分析器认为不走的性能更好。这个一步步问 gpt 就行,他会告诉你怎么排查。
cnhongwei
52 天前
现在的 oracle 都是基于代价使用索引的,要不你的索引不合理,要不统计信息不准确,你刷新一下统计,提示 oracle 使用索引,查看和不使用索引分别的代价区别。
iv8d
49 天前
从表配置里能明确看到已经设置了索引。有什么办法让索引能即时生效,或者说是强制让索引成功,因为目前仅使用了索引这一个条件进行查询。 @SoulSleep 定期优化计划?怎么让立即执行呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1059861

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX