索引學習二—blevel

小亮520cl發表於2015-06-11

1. 在一個大表上建立唯一索引

unique index idx_test on test(empno) nologging;
 
Index created.

2.分析該索引

Elapsed: 00:00:58.58
dbms_stats.gather_index_stats(user,'IDX_TEST');
 
PL/SQL procedure successfully completed.
 
Elapsed: 00:00:42.44
index_name,blevel,num_rows from user_indexes
  2  where index_name='IDX_TEST';
 
INDEX_NAME                         BLEVEL   NUM_ROWS
------------------------------ ---------- ----------
IDX_TEST                                2    7390971
 
Elapsed: 00:00:00.73

可見,該索引的blevel為2,

為了檢視height值,需要進行analyze分析。

index idx_test validate structure;
 
Index analyzed.

height,blocks,name,lf_rows,br_rows,used_space,btree_space from index_stats;

    HEIGHT     BLOCKS NAME          LF_ROWS    BR_ROWS USED_SPACE BTREE_SPACE
---------- ---------- ---------- ---------- ---------- ---------- -----------
         3      16384 IDX_TEST      7340032      16207  116548505   129799868

3. 執行查詢,檢視io情況。
 
autot on
empno from test where empno=100;
 
     EMPNO
----------
       100
 
 
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT ptimizer=CHOOSE
   1    0   INDEX (UNIQUE SCAN) OF 'IDX_TEST' (UNIQUE)
 
 
 
 
Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          3  consistent gets
          0  physical reads
          0  redo size
        376  bytes sent via SQL*Net to client
        503  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
     這種情況下,查詢只訪問索引,沒有掃描表,該索引beleve值為2,height值為3,要找到葉子節點需要2個io,加上訪問葉子節點本身的1個io,共需3個io。

    可見,在這種情況下,B*tree索引是多麼的有效。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1695816/,如需轉載,請註明出處,否則將追究法律責任。

相關文章