点评Oracle 11g新特性之统计信息收集
3. 对函数以及表达式收集统计信息
如果where条件类似于function_name(table_name.column_name)=’XXX’时,则优化器在估计这样的where条件的selectivity时,总是会假设其selectivity为1%,也就是该where条件将返回table_name里总记录行数的1%的记录行数。很明显的,这种假设肯定是错误的,从而可能导致优化器产生了不够优化的执行计划。
从11g开始,我们可以对函数或者表达式收集统计信息了。该特性依赖于虚拟列,也就是说你需要先用dbms_stats.create_extended_stats函数为function_name(table_name.column_name)创建一个虚拟列,然后对该虚拟列收集统计信息。比如下面的例子。
select dbms_stats.create_extended_stats('Schema_name','Table_name','length(C1)') from dual;
下面则显示的是对表达式来收集统计信息。
select dbms_stats.create_extended_stats('Schema_name','Table_name','C1*C2') from dual;
然后你可以对表收集统计信息时,就会为函数length(C1)对应的虚拟列收集统计信息了。如果你要对该虚拟列收集直方图,则可以如下所示:
exec dbms_stats.gather_table_stats('Schema_name','Table_name',
method_opt=>'for columns (length(C1)) size AUTO');
0
相关文章
- Perl 5.22 发布覃里 · 2015-06-05
- Tom Kyte大神解析Oracle 12c新版本特性覃里 · 2014-11-20
- 谷歌夏日情怀:细数谷歌十大火热新特性王冠 · 2011-09-12
- CUDA 4.0新特性预览董建伟 · 2011-03-01
- MySQL 5.5新特性详解覃里 · 2010-08-04
- Java 7新I/O特性解析覃里 · 2010-05-05
- MySQL 5.1.40新特性及下载覃里 · 2009-10-21
- Exchange 2010服务器端六项展示新功能胡铭娅 · 2009-09-30
- 微软展示Windows 7针对企业用户的新特性和技术亮点胡铭娅 · 2009-09-27
- Silverlight 3 影音支持新特性胡铭娅 · 2009-09-21