
我运行了一个解释计划,并注意到,对于快速查询(大约90%),Oracle正在使用索引范围扫描;在慢速扫描中,它使用完整的索引扫描.
有没有办法强制Oracle进行索引范围扫描?
我建议采用以下方法:>在缓慢的声明上获得解释计划
>使用INDEX提示,获取使用索引的说明计划
您会注意到INDEX计划的成本更高.这就是为什么Oracle没有选择索引计划.成本是Oracle根据其统计数据和各种假设进行的估计.
如果计划的估计成本较高,但实际运行速度更快,那么估计是错误的.你的工作就是弄清楚为什么估计是错误的,正确的.那么甲骨文将选择正确的计划,这个声明和其他人就是自己的.
为了弄清楚为什么这是错误的,看看计划中预期的行数.你可能会发现其中一个是一个数量级的.这可能是由于不均匀分布的列值,旧统计信息,彼此组合的列等.
要解决这个问题,您可以让Oracle收集更好的统计信息,并提供更好的开始假设.然后,它将估计准确的成本,并提出最快的计划.
如果您发布更多信息,我可能会进一步评论.
总结以上是内存溢出为你收集整理的如何强制oracle使用索引范围扫描?全部内容,希望文章能够帮你解决如何强制oracle使用索引范围扫描?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)