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

2024-07-25 08:23:42 +08:00
 iv8d

如题

起因

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

需求

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


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

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

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

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

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

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

© 2021 V2EX