博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计、案例-深入理解Oracle索引(10):索引列字符类型统计信息的32位限制-by小雨...
阅读量:6292 次
发布时间:2019-06-22

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

上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下统计、案例-

         ㈠ 先看两个来自产生境环的实在案例:

             

              

              

    

         ㈡ 道理:

    

     
     Oracle 在对于 varchar等字符型字段集收统计信息时,其实不会对每一个值都停止确精的统计
     而是,对值停止substr(,32)。一般来讲,种这方法没有什么问题
     但是,如果恰巧列中存储的据数,前32bytes同相,那么,Oracle 的统计就会与实际情况不符

    

     
     ㈢ 测试:

    

hr@ORCL> drop table t purge;Table dropped.hr@ORCL> create table t (id number,name varchar2(300));Table created.hr@ORCL> create index idx_t on t (name);Index created.hr@ORCL> insert into t select rownum,lpad('a',6,'a')||to_char(rownum) from dba_objects;50322 rows created.hr@ORCL> commit;Commit complete.hr@ORCL> exec dbms_stats.gather_table_stats(user,'T',null,null,method_opt=>'for columns size 254 name',cascade=>true);PL/SQL procedure successfully completed.hr@ORCL> select column_name, endpoint_actual_value  2        from user_tab_histograms  3       where table_name = 'T'  4             and rownum<5  5        order by column_name, endpoint_Number;COLUM ENDPOINT_ACTUAL_VALUE----- --------------------------------------------------NAME  aaaaaa46556NAME  aaaaaa46734NAME  aaaaaa46912NAME  aaaaaa47090hr@ORCL> truncate table t;Table truncated.hr@ORCL> insert into t select rownum,lpad('a',31,'a')||to_char(rownum) from dba_objects;50322 rows created.hr@ORCL> exec dbms_stats.gather_table_stats(user,'T',null,null,method_opt=>'for columns size 254 name',cascade=>true);PL/SQL procedure successfully completed.hr@ORCL> select column_name, endpoint_actual_value  2        from user_tab_histograms  3       where table_name = 'T'  4             and rownum<5  5        order by column_name, endpoint_Number;COLUM ENDPOINT_ACTUAL_VALUE----- --------------------------------------------------NAME  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1NAME  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2NAME  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3NAME  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4hr@ORCL> truncate table t;Table truncated.hr@ORCL> insert into t select rownum,lpad('a',32,'a')||to_char(rownum) from dba_objects;50322 rows created.hr@ORCL> exec dbms_stats.gather_table_stats(user,'T',null,null,method_opt=>'for columns size 254 name',cascade=>true);PL/SQL procedure successfully completed.hr@ORCL> select column_name, endpoint_actual_value  2        from user_tab_histograms  3       where table_name = 'T'  4             and rownum<5  5        order by column_name, endpoint_Number;COLUM ENDPOINT_ACTUAL_VALUE----- --------------------------------------------------IDIDNAME

         ㈣ 解决方案:

    

     
          删除引索列的直方图
          例子:

    

SQL> begindbms_stats.gather_table_stats(ownname => 'HR',                              tabname => 'T' ,                              estimate_percent => null ,                              method_opt => 'for columns SIZE 1 name' ,                              cascade => true);end;/

文章结束给大家分享下程序员的一些笑话语录: 很多所谓的牛人也不过如此,离开了你,微软还是微软,Google还是Google,苹果还是苹果,暴雪还是暴雪,而这些牛人离开了公司,自己什么都不是。

转载地址:http://wvdta.baihongyu.com/

你可能感兴趣的文章
【图解数据结构】 二叉树遍历
查看>>
laravel框架——路由
查看>>
inline-block兼容IE7
查看>>
random模块
查看>>
在二元树中找出和为某一值的所有路径
查看>>
使用PowerDesigner 15对现有数据库进行反向工程(转)
查看>>
怎样去思考问题 解决问题 zkc学长的福利
查看>>
[python]python2与python3版本的区别
查看>>
关于任务分配方式的一种设想
查看>>
11个很棒的 jQuery 图表库
查看>>
Android线程处理
查看>>
更新 TeX Live 软件包
查看>>
Exp3 免杀原理与实践 Week5 - 20165201
查看>>
嵌套查询
查看>>
关不掉.vbs
查看>>
算法11---红黑树的实现
查看>>
本地系统服务例程:Nt和Zw系列函数
查看>>
mysql 案例 ~ 常见案例汇总
查看>>
jmeter if 控制器
查看>>
Spring定时器时间设置规则
查看>>