知识大全 Oracle表连接中范围比较

Posted

篇首语:归志宁无五亩园,读书本意在元元。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle表连接中范围比较相关的知识,希望对你有一定的参考价值。

性能陷阱:Oracle表连接中范围比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Lately I met a case that the range filter predicates due to wrong cardinality issue Let s check the following query

  最近遇到一个由于范围过滤导致错误基数而引起的性能问题 让我们来看下面的查询

  The real records number is around

  真实的记录数大约 千 百万

  The explain plan shows optimizer think it has good filtration So put this JOIN in the first order Actually it is totally wrong

  执行计划显示 这里优化器认为它有良好的过滤芯 所以把它放在一个多个表JOIN的第一位置 显然 它完全错了

  SQL> set autotrace traceonly explain;

  SQL> set linesize

  SQL> SELECT

      T DURATIONSECSQTY TIMEINSECONDS

  T MONEYAMT MONEYAMOUNT

  T WAGEAMT WAGEAMOUNT

  T APPLYDTM APPLYDATE

  T ADJAPPLYDTM ADJUSTEDAPPLYDATE

  T STARTDTM

  T ENDDTM

  T HOMEACCOUNTSW

  FROM

  TKCSOWNER WFCTOTAL     T

  TKCSOWNER PAYCODE MMFLAT MP

  WHERE

  MP EFFECTIVEDTM <= T APPLYDTM

  AND MP EXPIRATIONDTM > T APPLYDTM

  AND MP PAYCODEID = T PAYCODEID

  /

  

  | Id | Operation       | Name       | Rows | Bytes | Cost |

  

  |   | SELECT STATEMENT   |           | | K| |

  |* | HASH JOIN       |           | | K| |

  |   |   TABLE ACCESS FULL| PAYCODE MMFLAT |   | |   |

  |   |   TABLE ACCESS FULL| WFCTOTAL     | K|   M| |

  Now let me ment the range filter

  让我注释到范围条件看

   MP EFFECTIVEDTM <= T APPLYDTM

  AND MP EXPIRATIONDTM > T APPLYDTM

  SQL> SELECT

      T DURATIONSECSQTY TIMEINSECONDS

  T MONEYAMT MONEYAMOUNT

  T WAGEAMT WAGEAMOUNT

  T APPLYDTM APPLYDATE

  T ADJAPPLYDTM ADJUSTEDAPPLYDATE

  T STARTDTM

  T ENDDTM

  T HOMEACCOUNTSW

  FROM

  TKCSOWNER WFCTOTAL     T

  TKCSOWNER PAYCODE MMFLAT MP

  WHERE

  /*   MP EFFECTIVEDTM <= T APPLYDTM

  AND MP EXPIRATIONDTM > T APPLYDTM*/

  MP PAYCODEID = T PAYCODEID                                       

   /

  Execution Plan

  

  Plan hash value:

  

  | Id | Operation         | Name         | Rows | Bytes | Cost |

  

  |   | SELECT STATEMENT     |             |   M| M| |

  |* | HASH JOIN         |             |   M| M| |

  |   |   INDEX FAST FULL SCAN| PK_PAYCODE MMFLAT |   | |   |

  |   |   TABLE ACCESS FULL   | WFCTOTAL       | K|   M| |

  The Cardinality show it is already close to the correct value

  基础是 已经接近正确结果了

  So how optimizer work out the cardinality with range filter in TABLE JOIN ?

  那么优化器怎么出来表连接中的范围扫描呢?

  The answer is % always %

  答案是 %

   * % * % = This is exact equal to the result of test

cha138/Article/program/Oracle/201311/18890

相关参考

知识大全 oracle导出表结构

  在cmd中输入expusername/password@连接串  回车在进入如下时输入no就ok了  导出表数据(yes/no)yes>no    进入plsql  找到table那个大项点

知识大全 Oracle共享连接和专用连接方式比较

Oracle共享连接和专用连接方式比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在专用连接方式

知识大全 Oracle数据库中的(+)连接

Oracle数据库中的(+)连接  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  从表AA(+)=

知识大全 Oracle数据库中的(+)连接如何操作

Oracle数据库中的(+)连接如何操作?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文主

知识大全 在Oracle网络结构中解决连接问题

在Oracle网络结构中解决连接问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近看到好多

知识大全 Oracle中传输表空间

数据库知识:Oracle中传输表空间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle

知识大全 Oracle数据库在配置文件中更改最大连接数

Oracle数据库在配置文件中更改最大连接数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在连

知识大全 用sqlplus为oracle创建用户和表空间

  用Oraclei自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的本文要介绍的是另一种方法使用Oraclei所带的命令行工具SQLPLUS来创建表空间这个方法用

知识大全 在Oracle中如何创建表空间、用户、权限分配

在Oracle中如何创建表空间、用户、权限分配  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  :

知识大全 Oracle数据库中的临时表用法

Oracle数据库中的临时表用法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这篇文章主要介绍