explain plan 是sql的执行计划 。如果一条sql平时执行的好好的,有一天突然变得很差,如果排除系统资源和阻塞的原因,基本可以断定是执行计划出现了问题。
执行计划可以定位sql性能的问题。
2.使用sql语句
EXPLAIN PLAN FOR SELECT * FROM DAVE;
SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
或者
select * from table(dbms_xplan.display);
字段解释
ID:一个序号,不是执行的先后顺序,执行先后根据缩进判断
Operation:当前操作的内容
Rows:当前操作的Cardinality,Oracle估计当前操作的返回结果集
CPU:Oracle计算出的一个数值,用于说明SQL执行的代价
Time:估计当前操作时间
db block gets:从buffer cache中读取的block的数量
consistent gets:从buffer cache中读取的undo数据的block数量
physical reads:从磁盘读取的block的数量
redo size:DML生成的redo的大小
sorts(memory):在内存执行的排序量
sorts(disk):在磁盘上上执行的排序量
Physical Reads通常是我们最关心的,如果这个值很高,说明要从磁盘请求大量的数据到Buffer Cache里,通常意味着系统里存在大量全表扫描的SQL语句,这会影响到数据库的性能,因此尽量避免语句做全表扫描,对于全表扫描的SQL语句,建议增加相关的索引,优化SQL语句来解决