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

我有一系列非常相似的查询,我针对14亿条记录(带索引)的表格,唯一的问题是至少有10%的查询使用>比其他人执行时间要多100倍.

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

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

我建议采用以下方法

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

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

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

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

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

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

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...