索引系列七--索引特性之高度较低是优化利器
admin
2023-05-14 22:22:50
0次

sqlplus ljb/ljb

drop table t1 purge;

drop table t2 purge;

drop table t3 purge;

drop table t4 purge;

drop table t5 purge;

drop table t6 purge;

drop table t7 purge;



create table t1 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=1;

create table t2 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=10;

create table t3 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=100;

create table t4 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=1000;

create table t5 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=10000;

create table t6 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=100000;

create table t7 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=1000000;


create index idx_id_t1 on t1(id);

create index idx_id_t2 on t2(id);

create index idx_id_t3 on t3(id);

create index idx_id_t4 on t4(id);

create index idx_id_t5 on t5(id);

create index idx_id_t6 on t6(id);

create index idx_id_t7 on t7(id);


set linesize 1000

select index_name,

          blevel,

          leaf_blocks,

          num_rows,

          distinct_keys,

          clustering_factor

     from user_ind_statistics

    where table_name in( 'T1','T2','T3','T4','T5','T6','T7');

INDEX_NAME  BLEVEL LEAF_BLOCKS   NUM_ROWS DISTINCT_KEYS CLUSTERING_FACTOR

------------------ ----------- ---------- ------------- -----------------

IDX_ID_T1        0           1          1             1                 1

IDX_ID_T2        0           1         10            10                 2

IDX_ID_T3        0           1        100           100                15

IDX_ID_T4        1           3       1000          1000               143

IDX_ID_T5        1          21      10000         10000              1429

IDX_ID_T6        1         222     100000        100000             14286

IDX_ID_T7        2        2226    1000000       1000000            142858


    


set autotrace traceonly statistics

set linesize 1000

--以下注意观察逻辑读的次数,另外注意尽量每条语句执行2遍以上,观察第2遍的结果。


select * from t1 where id=1;  

统计信息

-----------------------------------------

          0  recursive calls

          0  db block gets

          2  consistent gets          

select /*+full(t1)*/ * from t1 where id=1; 

统计信息

-------------------------------

          0  recursive calls

          0  db block gets

          3  consistent gets 

          

          

select * from t2 where id=1; 

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

          3  consistent gets           

select /*+full(t2)*/ * from t2 where id=1; 

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

          5  consistent gets

        

            

select * from t3 where id=1; 

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

          3  consistent gets

select /*+full(t3)*/ * from t3 where id=1; 

统计信息

----------------------------

          0  recursive calls

          0  db block gets

         19  consistent gets

            

            

select * from t4 where id=1; 

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

          4  consistent gets

select /*+full(t4)*/ * from t4 where id=1; 

统计信息

----------------------------

          0  recursive calls

          0  db block gets

        148  consistent gets

     

           

select * from t5 where id=1;

统计信息

------------------------------

          0  recursive calls

          0  db block gets

          4  consistent gets

select /*+full(t5)*/ * from t5 where id=1; 

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

       1435  consistent gets

       

                 

select * from t6 where id=1;  

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

          4  consistent gets  

select /*+full(t6)*/ * from t6 where id=1; 

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

      14298  consistent gets

      

            

select * from t7 where id=1;  

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

          5  consistent gets  

select /*+full(t7)*/ * from t7 where id=1; 

统计信息

-----------------------------

          0  recursive calls

          0  db block gets

     142866  consistent gets



/*

规律:

  从t1到t7(表记录依次增大10倍,从1到1000000),索引读的逻辑读是     2,3,3,4,4,4,5

  从t1到t7(表记录依次增大10倍,从1到1000000)全表扫描的逻辑读是    3,5,19,148,1435,14298,142866  

*/  


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...