回答

收藏

Oracle实施计划的成本和速度

技术问答 技术问答 136 人阅读 | 0 人回复 | 2023-09-13

在Oracle在构建和调整查询时,速度通常是开发人员最关心的问题。然而,在调整具体查询时,我最近试过了FIRST_ROWS和NO_CPU_COSTING提示,生成的执行计划的执行时间比以前快80%,但是成本比300高%。在执行计划中I/ O很少,而且所有额外的开销似乎都来自两个视图之间的嵌套循环外部联接。( s" ]1 z; T9 ]; L+ X
这个查询是分页的,所以我只需要几百行。缺乏有效性I /O,使我认为此查询将不依赖于缓存,乍一看,这似乎是可行的方法。但是,由于我从未见过查询会同时增加速度
( h" M+ R* a* V和    成本,所以我不确定使用这个查询可能有什么缺点。
! Q7 g, J% A  o9 g                                                                1 |( E" Z: e4 r/ ^4 u7 A3 p
    解决方案:                                                                ; b5 u' M! t5 n) S! F' l9 \0 R  |3 @
                                                                对于等值连接的查询,这是一个非常典型的查询。当需要完整的数据集时,查询已经优化为使用哈希连接,当只需要前几行或按下时on嵌套循环用于排序。索引可以更有效地用于子集的完整日期集。# d' R6 q6 h# [' s6 T8 @  D
当然,如果优化器不知道你只使用行的子集,它不会给你实际查询的成本,因为它包括所有从未执行过的嵌套循环操作的成本。执行它。5 A6 F) X0 X# b# G2 V' y/ B7 q
然而,估计成本没有错,仅此而已。如果您想为您的理解提供更有意义的数字,请使用它rownum限制。" W$ k$ `. e' c7 F) x" z
顺便说一句,我不赞成使用FIRST_ROWS,而推荐使用first_rows(1),first_rows(10),first_rows(100)或first_rows(1000)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则