执行计划总结
2015-06-09 11:29
225 查看
oracle访问数据的存取方法 :
1) 全表扫描(Full Table Scans, FTS)
2) 通过ROWID的表存取(Table Access by ROWID或rowid lookup)
3) 索引扫描(Index Scan或index lookup)有4种类型的索引扫描:
(1) 索引唯一扫描(index unique scan)
(2) 索引范围扫描(index range scan)
在非唯一索引上都使用索引范围扫描。使用index rang scan的3种情况:
(a) 在唯一索引列上使用了range操作符(> < <> >= <= between)
(实际测试只有用"="的时候才是用的index range scan,其他的走的是全表扫描)
(b) 在组合索引上,只使用部分列进行查询,导致查询出多行
(c) 对非唯一索引列上进行的任何查询。
注:如果条件只能够使用 yyy like '%xxx%'这种用法,则是全表扫描,哪怕yyy是一个索引。
(3) 索引全扫描(index full scan)
(4) 索引快速扫描(index fast full scan)
1.全表扫描(table access full)的情况:
a.where条件中如果有like,那么无论like后的字段是否加了索引或者是否有unique约束,都会有是全表扫描。这种情况消耗的IO比较高,一般都好几千以上。
b.没有where条件,这种情况肯定是全表查询。
2.通过rowid的表存取(Table Access By ROWID)
首先需要理解下索引。因为通过所以索引查询的时候,实际上是先通过查询索引对应的rowid,然后再通过rowid来查询具体的行。
由此查询时如果走索引的实际上全都会走 Table Access By Rowid;
3.索引扫描
a.索引唯一扫描(index unique scan)
查询条件中 如xx=1234, 如果xx是主键或者唯一性约束所在列,则走index unique scan
b.索引范围扫描(index range scan)
1) 全表扫描(Full Table Scans, FTS)
2) 通过ROWID的表存取(Table Access by ROWID或rowid lookup)
3) 索引扫描(Index Scan或index lookup)有4种类型的索引扫描:
(1) 索引唯一扫描(index unique scan)
(2) 索引范围扫描(index range scan)
在非唯一索引上都使用索引范围扫描。使用index rang scan的3种情况:
(a) 在唯一索引列上使用了range操作符(> < <> >= <= between)
(实际测试只有用"="的时候才是用的index range scan,其他的走的是全表扫描)
(b) 在组合索引上,只使用部分列进行查询,导致查询出多行
(c) 对非唯一索引列上进行的任何查询。
注:如果条件只能够使用 yyy like '%xxx%'这种用法,则是全表扫描,哪怕yyy是一个索引。
(3) 索引全扫描(index full scan)
(4) 索引快速扫描(index fast full scan)
1.全表扫描(table access full)的情况:
a.where条件中如果有like,那么无论like后的字段是否加了索引或者是否有unique约束,都会有是全表扫描。这种情况消耗的IO比较高,一般都好几千以上。
b.没有where条件,这种情况肯定是全表查询。
2.通过rowid的表存取(Table Access By ROWID)
首先需要理解下索引。因为通过所以索引查询的时候,实际上是先通过查询索引对应的rowid,然后再通过rowid来查询具体的行。
由此查询时如果走索引的实际上全都会走 Table Access By Rowid;
3.索引扫描
a.索引唯一扫描(index unique scan)
查询条件中 如xx=1234, 如果xx是主键或者唯一性约束所在列,则走index unique scan
b.索引范围扫描(index range scan)
相关文章推荐
- XML&JSON
- KopDB 框架学习2——源码分析
- 关于jsp中文提交到后台乱码问题解决办法
- 扫描件转换成文字
- MySQL Workbench导出csv格式文件打开后发现数据乱码解决方法
- android中ImageView设置选中与不选中颜色
- session的用法
- Jump Game-Leetcode
- Android数据存储
- html字符转义
- MySQL Workbench导出csv格式文件打开后发现数据乱码解决方法
- ASP.NET之get和post
- mac下.gitconfig配置别名alias
- sqlite命令行工具
- ubuntu中PostgreSQL使用方法详解
- C# 中利用 Conditional 定义条件方法
- zabbix分布式监控环境完全编译安装部署
- POJ 3006 解题报告
- URL编码与两次encodeURI
- plsql自动替换