加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 13:05:11 所属栏目:百科 来源:网络整理
导读:我有一系列非常相似的查询,我针对14亿条记录(带索引)的表格,唯一的问题是至少有10%的查询使用比其他人执行时间要多100倍. 我运行了一个解释计划,并注意到,对于快速查询(大约90%),Oracle正在使用索引范围扫描;在慢速扫描中,它使用完整的索引扫描. 有没有办
我有一系列非常相似的查询,我针对14亿条记录(带索引)的表格,唯一的问题是至少有10%的查询使用>比其他人执行时间要多100倍.

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

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

我建议采用以下方法:

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读