有没有办法强制oracle使用索引除了Hints?
答案 0 :(得分:7)
没有。如果优化器不使用索引,它通常有充分的理由。索引使用情况,如果索引较差,实际上可能会降低查询速度。
答案 1 :(得分:7)
Oracle在认为索引为
时不使用索引首先要检查的是索引是否已启用,然后在索引/表/架构上运行correct GATHER command。如果这没有帮助,Oracle认为加载索引实际上比加载实际行值花费更多时间。在这种情况下,请在索引中添加更多列,使其看起来更“多样化”。
答案 2 :(得分:1)
您可以查看oracle存储的大纲。您可以采用现有查询并创建存储的大纲,并像提示一样调整查询。这很难使用。在决定实施存储的轮廓之前做一些研究。
您可以在查询中添加提示,使其在一个索引上看起来比另一个索引更有利。
通常,如果您已经收集了所有表和索引的良好统计信息,Oracle通常会实现非常好的执行计划。
答案 3 :(得分:0)
如果您的查询在其条件中不包含索引字段,则使用索引的DB将是愚蠢的。因此,我再次回答唐尼的回答。
答案 4 :(得分:0)
是的,从技术上讲,你可以强制Oracle在一个场景中使用索引(没有提示):如果表是一个索引组织的表,那么逻辑上查询表的唯一方法是通过索引,因为有没有要查询的表。