如何强制oracle使用索引范围扫描?

前端之家收集整理的这篇文章主要介绍了如何强制oracle使用索引范围扫描?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一系列非常相似的查询,我针对14亿条记录(带索引)的表格,唯一的问题是至少有10%的查询使用>比其他人执行时间要多100倍.

我运行了一个解释计划,并注意到,对于快速查询(大约90%),Oracle正在使用索引范围扫描;在慢速扫描中,它使用完整的索引扫描.

有没有办法强制Oracle进行索引范围扫描?

我建议采用以下方法

>在缓慢的声明上获得解释计划
>使用INDEX提示,获取使用索引的说明计划

您会注意到INDEX计划的成本更高.这就是为什么Oracle没有选择索引计划.成本是Oracle根据其统计数据和各种假设进行的估计.

如果计划的估计成本较高,但实际运行速度更快,那么估计是错误的.你的工作就是弄清楚为什么估计是错误的,正确的.那么甲骨文将选择正确的计划,这个声明和其他人就是自己的.

为了弄清楚为什么这是错误的,看看计划中预期的行数.你可能会发现其中一个是一个数量级的.这可能是由于不均匀分布的列值,旧统计信息,彼此组合的列等.

解决这个问题,您可以让Oracle收集更好的统计信息,并提供更好的开始假设.然后,它将估计准确的成本,并提出最快的计划.

如果您发布更多信息,我可能会进一步评论.

原文链接:https://www.f2er.com/oracle/205436.html

猜你在找的Oracle相关文章