关于索引访问的一些探讨
2013-12-11 20:11
323 查看
索引范围扫描 当谓语中包含将会返回一定范围数据的条件时就会选用索引范围扫描。 索引可以是唯一或者不唯一的, 因为是由该条件来确定是否返回多个数据行的。 INDEX RANGE SCAN 索引范围扫描。单块读 发生在对unique index/primary key 进行范围查找, 对non-unique index进行等值查找,范围查找 等待事件:db file sequential read 如果你监控某个SQL出现大量该等待事件, 有可能执行计划就有问题 所指定的条件可以使用诸如 <,> like ,between, 甚至是=等运算符 SQL> select * from employees where department_id='60'; Execution Plan ---------------------------------------------------------- Plan hash value: 2056577954 ------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 5 | 665 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 5 | 665 | 2 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | EMP_DEPARTMENT_IX | 5 | | 1 (0)| 00:00:01 | ------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("DEPARTMENT_ID"=60) Note ----- - dynamic sampling used for this statement 范围扫描将会从根数据块开始到第一个包含符合特定条件的条目所在的叶子块来遍历索引结构。 再从那一点开始,从索引条目中取出一个行编号然后取出相应的表数据块(通过索引行编号访问数据表) 在第一行被取出来之后,之前的叶子索引块将再一次被访问并读取下一个索引条目来获取下一个行编号。 这种索引叶子块之间的反复来回将会不断持续直到所有匹配的索引都被读出。 因此,所需访问数据块的次数将包含索引中的分支块数(可以通过索引的blevel统计信息得出) 加上符合条件的索引条目数乘以2. 必须乘以2是因为每取出表中返回5行数据并且blevel为3,则总的需要访问的数据块次数将是 (5行 * 2) + 3=13 当返回5条记录时,需要访问13个块(索引块和表块),那是不是当访问记录达到一定程度时,索引访问的块数就接近了全表扫描的块数, 而且index range scan是单块读,全表扫描是多块读,那此时全表扫描的效率就会高于索引扫描。
相关文章推荐
- 关于索引访问的一些探讨
- 关于oracle数据库索引的一些学习记录
- 关于神经网络本质的一些探讨
- 关于用UDP网络游戏服务器的一些探讨
- 关于Java中的继承与访问修饰符的一些总结
- 关于索引的一些认识
- 关于print函数的一些细节问题探讨
- 关于Flask mega-tutorial遇到的一些问题(外网访问+OpenId)
- 关于using……的一些探讨
- 关于SQLserver的索引的一些脚本
- 关于windows服务器2003/2008 ip屏蔽问题 禁止一些ip访问
- 关于Android网络访问请求的一些总结 包括HttpClient HttpUrlConnection Volley
- 关于ASP.NET访问ACCESS数据的“不能打开注册表关键字”80004005错误的探讨
- 关于丢失或者损坏/etc/fstab文件后的一些探讨
- [个人原创]关于java中对象排序的一些探讨(二)
- 关于min(), max()函数访问索引的方法
- Lucene.Net:关于索引的一些补充说明和总结
- 关于海量用户访问的通用技术架构的一些思考
- 关于jquery索引的一些困惑