知识大全 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相关参考
在cmd中输入expusername/password@连接串 回车在进入如下时输入no就ok了 导出表数据(yes/no)yes>no 进入plsql 找到table那个大项点
Oracle共享连接和专用连接方式比较 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在专用连接方式
Oracle数据库中的(+)连接 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 从表AA(+)=
Oracle数据库中的(+)连接如何操作? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文主
在Oracle网络结构中解决连接问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近看到好多
数据库知识:Oracle中传输表空间 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle
Oracle数据库在配置文件中更改最大连接数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在连
用Oraclei自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的本文要介绍的是另一种方法使用Oraclei所带的命令行工具SQLPLUS来创建表空间这个方法用
在Oracle中如何创建表空间、用户、权限分配 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! :
Oracle数据库中的临时表用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这篇文章主要介绍