Oracle 执行计划(5)—cost成本之索引范围扫描-B树索引
来源:互联网 发布:android测绘软件 编辑:程序博客网 时间:2024/05/22 12:27
Oracle 执行计划(5)—cost成本之索引范围扫描-B树索引
SQL> select * from t1 where a<600 ;
已选择599行。
已用时间: 00: 00: 00.03
执行计划
----------------------------------------------------------
Plan hash value: 2474755989
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 593 | 1779 | 3 (0)| 00:00:01 |
|* 1 | INDEX RANGE SCAN| T1_IND | 593 | 1779 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"<600)
计算所用公式
INDEX
cost = blevel +ceiling(leaf_blocks * effective index selectivity) +ceiling(clustering_factor * effective table selectivity)
SQL> execute dbms_stats.gather_table_stats('ZENGMUANSHA','T1');
SQL> select column_name,NUM_NULLS,NUM_DISTINCT,density from user_tab_col_statistics where table_name='T1';
COLUMN_NAME NUM_NULLS NUM_DISTINCT DENSITY LOW_VALUE HIGH_VALUE
------------------------------ ---------- ------------ ----------------------
A 0 9926 0.00010074 C104 C302
SQL> select LEAF_BLOCKS,BLEVEL ,clustering_factor from user_indexes where index_name='T1_IND';
LEAF_BLOCKS BLEVEL CLUSTERING_FACTOR
----------- ---------- -----------------
21 1 16
先套下公式看看
COST=1+CEIL(21*EFFECTIVE INDEX SELECTIVITY)+CEIL(16*EFFECTIVE TABLE SELECTIVITY)
有效表选择率和有效索引选择率 是指能定位索引和表的谓词.
这里只有一个谓词 a<600 并且它是表和索引的定位的谓词.
选择率 这里就要回顾 Oracle 执行计划(2)-基数 cardinality
http://blog.csdn.net/zengmuansha/article/details/7484523
关于谓词区间的选择率计算
公式=需要空间除以可用空间
可用空间=high_vlaue-low_value=12-1=11
需要空间=(high_vlaue-limit) 或(limit-low_value)或(high_vlaue-low_value)
1 month_no>8 (high_vlaue-limit)/(high_vlaue-low_value)=(12-8)/11=4/11
A<600 =>(limit- low_value)/(high_vlaue-low_value)
=>(limit- low_value)/(high_vlaue-low_value)
=>(600-C104)/(C302-C104)
不知道如何算还是采用下面的吧!
SQL> SELECT MAX(A),MIN(A) FROM T1;
MAX(A) MIN(A)
---------- ----------
10000 1
=>(600-1)/(10000-1) =0.059905990599059905990599059905991
COST=1+CEIL(21*EFFECTIVE INDEX SELECTIVITY)+CEIL(16*EFFECTIVE TABLE SELECTIVITY)
=1+CEIL(21*0.05990)+CEIL(16*0.05990)
=1+ceil(1.2579)+ceil(0.9584)
=1+1+1
=3
- Oracle 执行计划(5)—cost成本之索引范围扫描-B树索引
- oracle执行计划(4.5)--cost成本之快速索引扫描
- oracle执行计划(4)--COST成本全表扫描成本
- 执行计划---索引扫描
- Oracle执行计划(6)-cost成本-连接成本
- Oracle索引1--B树索引倒序扫描
- oracle 5种b*树索引扫描方式
- oracle 分区 索引 执行计划
- Oracle执行计划中的索引
- oracle之B树索引
- Oracle索引——B树索引
- 索引范围扫描
- index range scan(索引范围扫描)的计划分析
- oracle编程入门笔记2015-01-18--执行计划中的索引扫描方式说明
- 【Cost】索引范围扫描的成本计算(非工作量模式下-noworkload)
- oracle B树索引
- 【索引】索引五种扫描方式至索引范围扫描
- 3.2.4 索引范围扫描
- VC6.0 & VS2010 调试心得
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(五内核测试 二 VFS: Cannot open root device "ubi0:FriendlyARM-root" )
- Windows CE 帮助系统
- 丰盛的晚餐
- Android开发指南-用户界面-对话框
- Oracle 执行计划(5)—cost成本之索引范围扫描-B树索引
- 双向链表实现 插入删除
- 心情博客
- Android开发指南-用户界面-事件处理
- linux下crontab命令的使用技巧
- 第九周上机任务5
- 哪些操作符具有副作用?它们具有什么副作用?
- jsp访问数据库的问题
- Android开发指南-用户界面-菜单特性