zoukankan      html  css  js  c++  java
  • 11G新特性 -- Expression Statistics

    当在查询中使用了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))');
  • 相关阅读:
    【Android Developers Training】 73. 布局变化的动画
    【Android Developers Training】 72. 缩放一个视图
    【Android Developers Training】 71. 显示翻牌动画
    svn更改地址怎么办
    python学习手册
    failed to bind pixmap to texture
    Ubuntu 12.04安装Google Chrome
    svn update 时总是提示 Password for '默认密钥' GNOME keyring: 输入密码
    重设SVN 的GNOME keyring [(null)] 的密码
    Nginx + uWSGI + web.py 搭建示例
  • 原文地址:https://www.cnblogs.com/abclife/p/4747860.html
Copyright © 2011-2022 走看看