回答

收藏

Oracle中的SQL优化

技术问答 技术问答 256 人阅读 | 0 人回复 | 2023-09-14

我们用的是Oracle 11,最近买了。Dell SQL Optimizer(Xpert
% w0 G+ E7 n+ ]7 X+ v' |Toad软件包随附)。今天早上,我们有一份声明,要比正常运行更长的时间,但在最终运行(创建时缺乏某些条件)后,我很好奇以前从未使用过任何条件SQL优化器,它将更改为。它返回了同一条语句的150多种变体,但成本最低的语句仅添加到了以下行中。( B2 t: R" N3 E6 ^; z
AND o.curdate > 0   UID * 0我们已经有o.curdate>添加了    UID *0。这将运行时间从一分钟以上减少到三秒。我以为是和。Oracle如何转换与处理条件有关,但我很好奇是否有任何问题Oracle专家可以提供一些意见,如何将这种大于零的检查减少15倍。
6 Z5 m2 l# @4 ]  [/ p4 ^$ T。谢谢!- Y( L. [. R+ Q/ T' h
                                                                $ r( |. w7 F  i! k2 g* `
    解决方案:                                                               
  r* w- L/ V5 v& t0 I                                                                UID * 0用于隐藏优化器0。优化器将使用其统计数据来确定是否使用索引扫描o.curdate >0有意义。只要优化器知道值,o.curdate >value然而,当值未知时(这是因为函数将在执行过程中调用)UID优化器无法预测可访问的行百分比,因此选择了平均最佳访问方法。
8 l8 J6 c6 x$ T3 a8 N* u, z例子:你有一个ID表1到100。ID> 0会导致全表扫描和询问ID> 99可能导致索引范围扫描。ID> 0   UID *在0点,优化器对值视而不见,它可以选择索引计划而不是全表面扫描。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则