


SQL> create table tab(a number,b number);Table created.SQL> insert into tab select rownum,rownum from dual connect by level <=10000;10000 rows created.SQL> commit;Commit complete.SQL> update tab set b=5 where b between 6 and 9995;9990 rows updated.SQL> commit;Commit complete.SQL> create index tab_b_idx on tab(b);Index created.
SQL> exec dbms_stats.gather_table_stats('HR','TAB',cascade=>true,method_opt=>'FOR COLUMNS B SIZE 1');PL/SQL procedure successfully completed.
SQL> select TABLE_NAME,COLUMN_NAME,ENDPOINT_NUMBER,ENDPOINT_VALUE from user_histograms where TABLE_NAME='TAB'TABLE_NAME COLUMN_NAME ENDPOINT_NUMBER ENDPOINT_VALUE------------ ------------ --------------- --------------TAB B 0 1TAB B 1 10000
SQL> select * from tab where b=5Execution Plan----------------------------------------------------------Plan hash value: 157166354-----------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-----------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1000 | 6000 | 4 (0)| 00:00:01 || 1 | TABLE ACCESS BY INDEX ROWID| TAB | 1000 | 6000 | 4 (0)| 00:00:01 ||* 2 | INDEX RANGE SCAN | TAB_B_IDX | 1000 | | 2 (0)| 00:00:01 |-----------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------2 - access("B"=5)
SQL> exec dbms_stats.gather_table_stats('HR','TAB',cascade=>true);PL/SQL procedure successfully completed.
SQL> select * from tab where b=1;Execution Plan----------------------------------------------------------Plan hash value: 157166354-----------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-----------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 6 | 2 (0)| 00:00:01 || 1 | TABLE ACCESS BY INDEX ROWID| TAB | 1 | 6 | 2 (0)| 00:00:01 ||* 2 | INDEX RANGE SCAN | TAB_B_IDX | 1 | | 1 (0)| 00:00:01 |-----------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------2 - access("B"=1)
SQL> select * from tab where b=5;Execution Plan----------------------------------------------------------Plan hash value: 1995730731--------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 9991 | 59946 | 6 (0)| 00:00:01 ||* 1 | TABLE ACCESS FULL| TAB | 9991 | 59946 | 6 (0)| 00:00:01 |--------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------1 - filter("B"=5)
SQL> select TABLE_NAME,COLUMN_NAME,ENDPOINT_NUMBER,ENDPOINT_VALUE from user_tab_histograms where table_name='TAB';TABLE_NAME COLUMN_NAME ENDPOINT_NUMBER ENDPOINT_VALUE------------ ------------ --------------- --------------TAB B 1 1TAB B 2 2TAB B 3 3TAB B 4 4TAB B 9995 5TAB B 9996 9996TAB B 9997 9997TAB B 9998 9998TAB B 9999 9999TAB B 10000 10000 TAB A 0 1TABLE_NAME COLUMN_NAME ENDPOINT_NUMBER ENDPOINT_VALUE------------ ------------ --------------- --------------TAB A 1 1000012 rows selected.
SQL> exec dbms_stats.gather_table_stats('HR','TAB',cascade=>true,method_opt=>'FOR COLUMNS B SIZE 8);PL/SQL procedure successfully completed.
SQL> select TABLE_NAME,COLUMN_NAME,ENDPOINT_NUMBER,ENDPOINT_VALUE from user_histograms where table_name='TAB';TABLE_NAME COLUMN_NAME ENDPOINT_NUMBER ENDPOINT_VALUE------------ ------------ --------------- --------------TAB B 0 1TAB B 7 5TAB B 8 10000TAB A 0 1TAB A 1 10000
SQL> select * from tab where b=5Execution Plan----------------------------------------------------------Plan hash value: 1995730731--------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 9982 | 59892 | 6 (0)| 00:00:01 ||* 1 | TABLE ACCESS FULL| TAB | 9982 | 59892 | 6 (0)| 00:00:01 |--------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------1 - filter("B"=5)
dbms_stats.delete_column_stats(ownname => user,tabname => 'T',colname => 'VAL',col_stat_type => 'HISTOGRAM');


Oracle ADG同步技术,DBA必备的一种“后悔药” Oracle 11g 异机rman恢复报错ORA-27302:failure occurred at: sskgpcreates 年末总结_聊一聊数据库行业的“继往开来” Materialized view物化视图的一个简单应用场景 干货:RHEL7.2生产环境下双节点12c RAC搭建实操 【干货篇】在国内外数据库百家争鸣的时代,DBA们该何去何从? LINUX环境:MySQL和Oracle开机自启动,咋搞? Logminer:oracle人为误操作之恢复神器 What:ASM自动脱落了 实操:12C RAC环境下的ADG同步库搭建 “神器”:Oracle日志采集分析工具——TFA Oracle Rac:关闭透明大页的原因及方法 实操篇:Oracle 19c的安装部署 MySQL:主从同步延迟Seconds_Behind_Master越来越大,什么鬼? 浅谈MySQL三种锁:全局锁、表锁和行锁 Oracle如何访问MySql:透明网关
最后修改时间:2020-01-14 10:50:40
文章转载自一森咖记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




