V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iv8d
V2EX  ›  程序员

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

  •  
  •   iv8d · 145 天前 · 1110 次点击
    这是一个创建于 145 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题

    起因

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

    需求

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


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

    5 条回复    2024-07-29 10:00:37 +08:00
    mamumu
        1
    mamumu  
       145 天前
    mysql 里对索引有个区分度的评价,评分高的才会采用,但是这个值并不是事实更新的,可以用 ANALYZE TABLE 让它立即更新。感觉 oracle 也有类似的机制吧
    SoulSleep
        2
    SoulSleep  
       145 天前
    这种问题问 dba 就好...
    Oracle 有定期的索引优化计划
    另外可以强制绑定执行计划走索引
    nash1000
        3
    nash1000  
       145 天前
    有多种可能不走索引,索引失效,表的统计信息不准确,或者分析器认为不走的性能更好。这个一步步问 gpt 就行,他会告诉你怎么排查。
    cnhongwei
        4
    cnhongwei  
       144 天前
    现在的 oracle 都是基于代价使用索引的,要不你的索引不合理,要不统计信息不准确,你刷新一下统计,提示 oracle 使用索引,查看和不使用索引分别的代价区别。
    iv8d
        5
    iv8d  
    OP
       141 天前
    从表配置里能明确看到已经设置了索引。有什么办法让索引能即时生效,或者说是强制让索引成功,因为目前仅使用了索引这一个条件进行查询。 @SoulSleep 定期优化计划?怎么让立即执行呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5429 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:59 · PVG 10:59 · LAX 18:59 · JFK 21:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.