博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11G新特性 -- Expression Statistics
阅读量:5021 次
发布时间:2019-06-12

本文共 1312 字,大约阅读时间需要 4 分钟。

当在查询中使用了function,返回值会受到影响。

比如:

select count(*) from customers where lower(cust_state_province)='ca';

优化器只知道原先列上的统计信息,而不知道被lower函数转后以后的统计信息,列的选择性会受到影响,但是优化器去无法得知。 对于sql语句谓词中的列使用了函数以后,优化器会简单的认为该列的选择性为1%。这样就会导致执行计划发生改变。

在oracle 10g中,只会针对几种列的表达式进行Expression Statistics收集。如表达式要能保持数据的分布特征和列的分布特征相同,比如to_number()。

在oracle 11g中,数据库使用Expression Statistics,包括用户定义的函数、基于索引的函数。该新特性依赖虚拟列来创建表达式统计信息。

 

创建Expression Statistics

SQL> select dbms_stats.create_extended_stats(null,'customers','(lower(cust_state_province))') from dual;DBMS_STATS.CREATE_EXTENDED_STATS(NULL,'CUSTOMERS','(LOWER(CUST_STATE_PROVINCE))'--------------------------------------------------------------------------------SYS_STUBPHJSBRKOIK9O2YV3W8HOUE或者SQL> exec dbms_stats.gather_table_stats(null,'customers',method_opt => 'for all columns size skewonly for columns (lower(cust_state_province)) skewonly');

 

查看

SQL> select extension_name,extension from dba_stat_extensions where table_name='CUSTOMERS';EXTENSION_NAME                 EXTENSION------------------------------ --------------------------------------------------------------------------------SYS_STUBPHJSBRKOIK9O2YV3W8HOUE (LOWER("CUST_STATE_PROVINCE"))

 

删除

SQL> exec dbms_stats.drop_extended_stats('sh','customers','(lower(cust_state_province))');

 

转载于:https://www.cnblogs.com/abclife/p/4747860.html

你可能感兴趣的文章
.NETFramework:template
查看>>
HM16.0之帧内模式——xCheckRDCostIntra()函数
查看>>
Jmeter性能测试 入门
查看>>
安卓动画有哪几种?他们的区别?
查看>>
Nodejs学习总结 -Express入门(一)
查看>>
web前端优化
查看>>
ssh 连接原理及ssh-keygen
查看>>
vs2013编译qt程序后中文出现乱码
查看>>
【转】IOS数据库操作SQLite3使用详解
查看>>
Android官方技术文档翻译——ApplicationId 与 PackageName
查看>>
设计网站大全
查看>>
JVM CUP占用率过高排除方法,windows环境
查看>>
【转】JAVA字符串格式化-String.format()的使用
查看>>
【转】ButterKnife基本使用--不错
查看>>
【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”...
查看>>
函数中关于const关键字使用的注意事项
查看>>
微信架构(转)
查看>>
Web项目中的路径问题
查看>>
js随机数的取整
查看>>
关于解析漏洞
查看>>