数据库中SQl执行计划--01 执行计划
程序员文章站
2022-05-07 13:43:52
...
执行计划说明: call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 1 140.64 921.65 286181 7035288 0 1 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 3 140.64 921.66 286181 7035288 0 1 Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 86 (APPS) Number of plan statistics captured: 1 Rows (1st) Rows (avg) Rows (max) Row Source Operation ---------- ---------- ---------- --------------------------------------------------- 1 1 1 SORT AGGREGATE (cr=7035288 pr=286181 pw=0 time=921659252 us) 1 1 1 PARTITION LIST SINGLE PARTITION: KEY KEY (cr=7035288 pr=286181 pw=0 time=921659238 us cost=3 size=39 card=1) 1 1 1 TABLE ACCESS BY LOCAL INDEX ROWID XLA_TRANSACTION_ENTITIES PARTITION: 9 9 (cr=7035288 pr=286181 pw=0 time=921659220 us cost=3 size=39 card=1) 30222127 30222127 30222127 INDEX SKIP SCAN XLA_TRANSACTION_ENTITIES_U1 PARTITION: 9 9 (cr=115720 pr=52531 pw=0 time=151161817 us cost=3 size=0 card=14612220)(object id 5888403) Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT MODE: ALL_ROWS 1 SORT (AGGREGATE) 1 PARTITION LIST (SINGLE) PARTITION:KEYKEY 1 TABLE ACCESS MODE: ANALYZED (BY LOCAL INDEX ROWID) OF 'XLA_TRANSACTION_ENTITIES' (TABLE) PARTITION: START=9 STOP=9 30222127 INDEX MODE: ANALYZED (SKIP SCAN) OF 'XLA_TRANSACTION_ENTITIES_U1' (INDEX (UNIQUE)) PARTITION: START=9 STOP=9
call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 1 140.64 921.65 286181 7035288 0 1 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 3 140.64 921.66 286181 7035288 0 1 说明:第一段落,展示了所执行SQL的文件。接着是一个包含统计信息的表格。 count:每个类型调用发生的次数。 cpu:所需的CPU时间(单位为秒)。 elapsed:所需的时间消耗(单位为秒)。 disk:所需要的磁盘读取的数量。 query、current:查询模式和当前模式缓存的数据。查询模式读取的块,通常是由一致读取的查询产生。而当前模式读取的块,通常来自自己存在块的变更。它们可以称为逻辑读。 rows:处理记录的条数。 Parse:进行解析,这一步会检查SQL语句的语法、对象的有效性及权限。接着由优化器确定这条语句的执行计划。 Execute:进行执行。SQL语句在这一步执行,如果是查询语句的话,则为第一次的提取操作做准备。对于有些查询(比如含有 for update的语句或执行排序的语句),系统会在这一步就检索出每一条记录。 Fetch:进行提取。查询语句从这里返回记录。 total:是对上面的一个总数的计算。 从这个表格当中,我们可以得到一些重要的比率,如下: 在fetch行中,块读取数据(query+current)与获取的记录数据(rows)的比率。这是查询语句的相对开销的一个粗略指标。返回一定数量的记录时,要访问的内存块越多,每条记录就显得越可贵。 在count列中,解析次数(Parse)与执行次数(Execute)的比率。在理想的情况下,<解析次数?>应接近于1。如果解析次数相对于执行次数来讲显得较高,那么,就表明这条语句在执行没有必要的重解析。 在fetch行中,提取记录数(rows)与提取次数(count)的比率。它表明数组提取机制使用的级别。 在total行中,磁盘读取数(disk)与逻辑读取数(query+current)的比率。它表明数据库缓存区高速缓存的命中率。
第一次执行计划: Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 86 (APPS) Number of plan statistics captured: 1 Rows (1st) Rows (avg) Rows (max) Row Source Operation ---------- ---------- ---------- --------------------------------------------------- 1 1 1 SORT AGGREGATE (cr=7035288 pr=286181 pw=0 time=921659252 us) 1 1 1 PARTITION LIST SINGLE PARTITION: KEY KEY (cr=7035288 pr=286181 pw=0 time=921659238 us cost=3 size=39 card=1) 1 1 1 TABLE ACCESS BY LOCAL INDEX ROWID XLA_TRANSACTION_ENTITIES PARTITION: 9 9 (cr=7035288 pr=286181 pw=0 time=921659220 us cost=3 size=39 card=1) 30222127 30222127 30222127 INDEX SKIP SCAN XLA_TRANSACTION_ENTITIES_U1 PARTITION: 9 9 (cr=115720 pr=52531 pw=0 time=151161817 us cost=3 size=0 card=14612220)(object id 5888403) 第一次执行计划来自于语句关闭时存储在跟踪文件中的信息。这个执行计划不是由EXPLAIN PLAIN命令执行出来的,它代表了实际执行时的执行计划。 参数说明如下: cr:表明这一步中,处理的逻辑块读取的数据。 pr:表明这一步中,处理物理块的读取的数据。 pw:表明这一步中,物理块的写的数量。 time:这一步所消耗的微秒数。 cost:这一步对应的优化成本。 size:处理的字节数。 card:处理的记录数。
第二次的执行计划则是由tkprof工具中的explain命令得出来的。 Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT MODE: ALL_ROWS 1 SORT (AGGREGATE) 1 PARTITION LIST (SINGLE) PARTITION:KEYKEY 1 TABLE ACCESS MODE: ANALYZED (BY LOCAL INDEX ROWID) OF 'XLA_TRANSACTION_ENTITIES' (TABLE) PARTITION: START=9 STOP=9 30222127 INDEX MODE: ANALYZED (SKIP SCAN) OF 'XLA_TRANSACTION_ENTITIES_U1' (INDEX (UNIQUE)) PARTITION: START=9 STOP=9 第二次的执行计划则是由tkprof工具中的explain命令得出来的。
上一篇: oracle查看执行计划
下一篇: VLC Streaming
推荐阅读
-
获取SQL Server数据库中的聚簇索引信息
-
Oracle中利用10053事件来分析Oracle是如何做出最终的执行计划
-
SQL中DML(数据库操作语言)的使用
-
在数据库中 如何进行分类分组并总计SQL信息
-
SQL参数化查询的另一个理由 命中执行计划
-
SQL Server 2000/2005中数据库自动备份的设
-
写sql语句 获取数据库中A表的第31条
-
mysql-哪位大神告诉我这个sql怎么优化,有执行计划图
-
将Mysql数据库迁移到Windows Azure上的SQL database中
-
Oracle执行计划中的连接方式nested loops join、sort merge joinn、hash join