(⼆⼗四)PLSQLDeveloper执⾏计划⽂章⽬录
执⾏计划
什么是执⾏计划
执⾏计划是⼀条查询语句在Oracle中的执⾏过程或者访问路径的描述
配置执⾏计划需要显⽰的项
执⾏计划的常⽤列字段解释
1. 基数(Cardinality): Oracle估计的当前操作的返回结果集⾏数
2. 字节(Bytes): 执⾏计划该步骤后返回的字节数
3. 耗费(COST): CPU耗费: Oracle估计的该步骤的执⾏成本, ⽤于说明SQL执⾏的代价, 理论上越⼩越好(该值可能与实际有出⼊)
4. 时间(TIME): Oracle估计的当前操作所需要的时间
使⽤执⾏计划
选中执⾏语句, 按F5, 即可打开执⾏计划
查看执⾏顺序
缩进越多的, 越先执⾏
缩进相同的, 在上⾯的先执⾏
表访问的⼏种⽅式(⾮全部):
TABLE ACCESS FULL (全表扫描)
TABLE ACCESS BY INDEX ROWID(通过ROWID的表存取)
TABLE ACCESS BY INDEX SCAN(索引扫描)
table access full 全表扫描
Oracle 会读取表中所有的⾏, 并检查每⼀⾏是否满⾜SQL语句的Where限制条件;
使⽤建议: 数据量太⼤的表不建议使⽤全表扫描, 除⾮本⾝需要取出的数据较多, 占到表数据总量的5%~10%或以上⽐如: LIKE关键字使⽤, 会扫描全表
table access by index rowid ⽤过rowid的表存取
伪列, 表中不会存储伪列的值.
你可以像使⽤其他列⼀样使⽤它, 只是不能对该列的值进⾏增删改操作.
⼀旦⼀⾏数据插⼊后, 则其对应的ROWID在该⾏的⽣命周期是唯⼀的, 即使发⽣⾏迁移, 该⾏的ROWID值也不变table access by index scan(索引扫描)
在索引块中, 即存储每个索引的键值, 也存储具有该值的⾏的ROWID
索引扫描分为两步
1. 扫描索引得到对应的ROWID
2. 通过ROWID 定位到具体的⾏读取数据
五种索引扫描
INDEX UNIQUE SCAN 索引唯⼀扫描
INDEX RANGE SCAN 索引范围扫描
INDEX FULL SCAN 索引全扫描
INDEX FAST FULL SCAN 索引快速扫描
INDEX SKIP SCAN 索引跳跃扫描
INDEX UNIQUE SCAN 索引唯⼀扫描
针对唯⼀性索引(UNIQUE INDEX)的扫描, 每次⾄多返回⼀条记录, 表中某字段存在UNIQUE, PRIMARY KEY约束时, Oralce常实现唯⼀性扫描
INDEX RANGE SCAN 索引范围扫描
使⽤⼀个索引存取多⾏数据:
发⽣索引列存取多⾏数据
1. 使⽤了范围操作符(如: > < <> >= <= between);
2. 在组合索引上, 只使⽤部分列进⾏查询 ( 查询时必须包含前导列, 否则会⾛全表扫描)
3. 对⾮唯⼀索引列上进⾏的任何查询
INDEX FULL SCAN 索引全扫描
进⾏全索引扫描时, 查询出的数据都必须从索引中可以直接得到
INDEX FAST FULL SCAN 索引快速扫描
扫描索引中的所有的数据块, 与index full scan类似, 但是⼀个显著的区别是他不对查询出的数据进⾏排序( 级数据不是以排序顺序被返回);
Index SKIP SCAN (索引跳跃扫描)
表有⼀个复合索引, 且在查询时有除了前导列(索引中第⼀列)外的其他列作为条件
Oracle 的优化器
RBO (Rule-Based Optimization) 基于规则的优化器
CBO (Cost-Based Optimization) 基于代价的优化器
RBO优化器
沿⽤到Oracle9i 从Oracle 10g开始, 已被弃⽤
CBO优化器
CBO是⼀种⽐RBO更加合理, 可靠的优化器, 在Oracle 10g中完全取代RBO, CBO通过计算各种可能的执⾏计划的"代价", 即COST最低的执⾏⽅案作为实际运⾏⽅案.
执⾏计划的使⽤
单表
分析表中的所有数据
⽰例: 查询employees表中的所有数据
select*from employees;
可以看到, 分析结果为, 此表进⾏了全表扫描, 代价值为3. 共搜索了107条数据, 搜索字节为7383字节
分析主键作为条件的查询
⽰例: 查询employees表中employees_id为100的员⼯
select*from employees where employee_id =100
cost代价为1, 为什么这次这么少呢? 可以看到, 这次扫描使⽤了唯⼀约束扫描, 消耗的代价⾮常低. 故⽽如果想优化sql, 那么使⽤唯⼀约束进⾏查询是个很好的选择.
分析⾮主键列作为查询条件
⽰例: 查询雇员名字为Tarloy的雇员
sqldeveloper安装步骤
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论