physical reads -----从磁盘读取的block的数量
redo size ----- DML生成的redo的大小
sorts (memory) -----在内存执行的排序量
sorts (disk) -----在磁盘上执行的排序量
3.6 tkprof解读
parse(分析):在共享池中找到该查询(软分析)或者创建该查询的新计划(硬分析)
execute(执行):执行查询的所有工作
fetch(提取):显示select的提取工作,对于update,则没有内容
count(计数):执行的次数
cpu:此阶段cpu的耗时,以毫秒为单位
elapsed(占用时间):挂钟时间,如果大于cpu时间,则有等待时间
disk(磁盘):执行物理I/O的次数
QUERY(查询):检索一致性执行的I/O次数
CURRENT(当前):到当前多执行的逻辑I/O次数
ROW:此阶段被处理或者受到影响的行
如果一个UPDATE语句EXECUTE的QUERY,CURRENT,ROWS分别为2000 1000 500,表示这个语句访问了2000个块找到需要UPDATE的行记录,在UPDATE的时候只访问了1000个块,一共更新了500行。如果只获取很少的数据,而要访问了大量的块,表明SQL与需要优化了。
MISSES 缓存命中率:0 表示已经通过软分析
OPTIMIZER GOAL(优化程序目标)
3.7巧用rownum。
记住rownum是伪例,他永远从1开始,也就是说select xxxx from xxxxx where rownum>5这样的是不可能产生结果的。那如果你一定要这么做怎么办呢可以使用
select * from (select rownum as rn,t.* from xxxx t) where rn>10;
作者“ERDP技术架构”