纸上得来终觉浅,绝知此事要躬行
索引学习二—blevel
上一篇 /
下一篇 2008-05-17 08:56:10
/ 个人分类:读书笔记
1. 在一个大表上创建唯一索引
scott@TEST>createunique index idx_test on test(empno) nologging;
Index created.
2.分析该索引
Elapsed: 00:00:58.58
scott@TEST>execdbms_stats.gather_index_stats(user,'IDX_TEST');
PL/SQL procedure successfully completed.
Elapsed: 00:00:42.44
scott@TEST>selectindex_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分析。
scott@TEST>analyzeindex idx_test validate structure;
Index analyzed.
scott@TEST>selectheight,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情况。
scott@TEST>setautot on
scott@TEST>selectempno 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索引是多么的有效。
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: