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

如何强制oracle使用索引范围扫描?,第1张

概述我有一系列非常相似的查询,我针对14亿条记录(带索引)的表格,唯一的问题是至少有10%的查询使用>比其他人执行时间要多100倍. 我运行了一个解释计划,并注意到,对于快速查询(大约90%),Oracle正在使用索引范围扫描;在慢速扫描中,它使用完整的索引扫描. 有没有办法强制Oracle进行索引范围扫描? 我建议采用以下方法: >在缓慢的声明上获得解释计划 >使用INDEX提示,获取使用索引的说明 我有一系列非常相似的查询,我针对14亿条记录(带索引)的表格,唯一的问题是至少有10%的查询使用>比其他人执行时间要多100倍.

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

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

我建议采用以下方法:

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

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

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

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

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

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

总结

以上是内存溢出为你收集整理的如何强制oracle使用索引范围扫描?全部内容,希望文章能够帮你解决如何强制oracle使用索引范围扫描?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1167497.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存