执行计划中Cardinality (Estimated Rows, E-Rows) 估算错误原因分析

http://structureddata.org/2007/11/21/troubleshooting-bad-execution-plans/  

1.  Data skew : NDV (Number of distinct values) inaccurate due to data skew and a poor dbms_stats sample? 
Data correlation: Are two or more predicates related to each other? 
Out-of-range values: Is the predicate within the range of known values? 
Use of functions in predicates: Is the 5% cardinality guess for functions accurate? 
Stats gathering strategies: Is your stats gathering strategy yielding representative stats?  

Some possible solutions to these issues are:  

Data skew (数据倾斜):  选择一个sample size得出正确的 NDV (Number of distinct values). 11g中使用DBMS_STATS.AUTO_SAMPLE_SIZE
                 直方图也是一个选项 。 
                 
Data correlation (数据相关):   当谓词使用多个相关列(correlated column)时,会导致约束条件的冗余。这几个相关的列也被称作关联列。
                出现这种情况时,查询优化器也可能会做出不准确的判断,在11g中可以使用 Extended Stats收集基于表达式或者一组列上
                的对象统计信息和直方图,从而解决这种问题. 如果版本<= 10.2.0.3 可以使用 CARDINALITY hint . 
                
Out-of-range values:  谓词在所知值的范围之外,需要收集或手工设置statistics。

Use of functions in predicates:   谓词中使用函数。在可能的地方使用 CARDINALITY hint 。
 
Stats gathering strategies:  数据收集策略是否产生具有代表性的统计信息。尝试使用AUTO_SAMPLE_SIZE. Adjust only where necessary. 
                         Be mindful of tables with skewed data.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-1383468/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-1383468/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值