本帖最后由 xihuisi333 于 2016-4-24 21:34 编辑

select语句执行计划有1步是根据ROWID取表的数据,逻辑读=1次根节点扫描+1次叶子节点扫描+1次表扫描=3。

update和delete语句没有TABLE ACCESS BY INDEX ROWID,逻辑读=1次根节点扫描+1次叶子节点扫描=2。

update和delete语句不需要根据rowid查出表中的数据再做更新或删除吗?还是执行计划中没体现?

create table test1 as select level id,'x'||level name from dual connect by level<=10000;

create unique index i_test1 on test1(id);

select a.blevel,a.leaf_blocks,a.num_rows,a.index_name from user_indexes a where index_name='I_TEST1';

BLEVEL LEAF_BLOCKS   NUM_ROWS INDEX_NAME

------     -----------           ----------         ---------------

1          20             10000            I_TEST1

--1.

select * from test1 where id=1;

---------------------------------------------------------------------------------------

| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |         |     1 |    10 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| TEST1   |     1 |    10 |     2   (0)| 00:00:01 |

|*  2 |   INDEX UNIQUE SCAN          | I_TEST1 |     1 |       |     1   (0)| 00:00:01 |

---------------------------------------------------------------------------------------

3  consistent gets

--2.

update test1 set name='x' where id=1;

-----------------------------------------------------------------------------

| Id  | Operation         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

-----------------------------------------------------------------------------

|   0 | UPDATE STATEMENT  |         |     1 |    10 |     2   (0)| 00:00:01 |

|   1 |  UPDATE           | TEST1   |       |       |            |          |

|*  2 |   INDEX UNIQUE SCAN| I_TEST1 |     1 |    10 |     1   (0)| 00:00:01 |

-----------------------------------------------------------------------------

2  consistent gets

--3.

delete from test1 where id=1;

-----------------------------------------------------------------------------

| Id  | Operation         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

-----------------------------------------------------------------------------

|   0 | DELETE STATEMENT  |         |     1 |    13 |     1   (0)| 00:00:01 |

|   1 |  DELETE           | TEST1   |       |       |            |          |

|*  2 |   INDEX UNIQUE SCAN| I_TEST1 |     1 |    13 |     1   (0)| 00:00:01 |

-----------------------------------------------------------------------------

2  consistent gets

oracle执行计划更新,请教update和delete的执行计划相关推荐

  1. mybatis执行批量更新batch update 的方法(oracle,mysql)

    oracle和mysql数据库的批量update在mybatis中配置不太一样: oracle数据库: <updateid="batchUpdate" parameterTy ...

  2. oracle 视图怎么更新数据,Update视图数据(oracle)

    一般说起视图第一反应就是无法对其中数据进行修改,如果视图只包含一张表,应该是可以update的,因为SQL会执行查询转换,将视图转成表.但是多数的视图都是多表关联,那如何对视图中的数据进行update ...

  3. oracle中update,insert,delete的高级用法

    一.对视图的更新. update,insert,delete除了可以作用于单表,还可以作用于视图.子查询,但是有种种限制. 视图(子查询)的限制:   1.没有集合操作符(并.差.交): 2.没有DI ...

  4. oracle Plsql 执行update或者delete时卡死问题解决办法

    oracle Plsql 执行update或者delete时卡死问题解决办法 参考文章: (1)oracle Plsql 执行update或者delete时卡死问题解决办法 (2)https://ww ...

  5. oracle中执行某sql语句后,如一系列delete、update等操作,怎么看影响的行数?如我执行了n个表的delete语句,得看我删除了多少数据,万一sql写的有问题,误删了数据,不是灾难?

    oracle中执行某sql语句后,如一系列delete.update等操作,怎么看影响的行数?如我执行了n个表的delete语句,得看我删除了多少数据,万一sql写的有问题,误删了数据,不是灾难? 使 ...

  6. Oracle使用游标更新数据 Oracle游标之select for update和where current of 语句

    Oracle使用游标更新数据 2016年11月20日 13:15:49 hzwy23 阅读数:5313 友情推广 ###使用游标修改数据 ####定义一个游标,游标名称为 mycursor ##### ...

  7. oracle 索引概念、索引相关、sql查询执行计划

    文章目录 一.索引 1.1 索引概念 1.2 索引分类 1.3 位图索引(企业版oracle): 1.4 B树索引 (1) 唯一索引 (2) 组合索引 (3) 反向键索引 (4) 函数索引 1.5 和 ...

  8. oracle 多值更新,oracle 同时更新(update)多个字段多个值

    --创建表A,B: create table A (a1 varchar2(33),a2 varchar2(33),a3 varchar2(33)); create table B (b1 varch ...

  9. oracle没有提交更新,oracle 中更新update不成功的原因

    oracle 中执行insert into 与delete 都正常,但是执行update 却没有反应. 原因: 是因为记录锁.这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在o ...

  10. update和delete操作忘加where条件导致全表更新的处理方法

    在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句写的有问题导致服务器出问题,导致资源耗尽.最危险的操作就是在做DML操作的时候忘加where条件,导致全表更新,这是作为运维或者D ...

最新文章

  1. 好用到爆的 Java 技巧
  2. 举行可衡量自动行驶车未来发展的“智能模型车竞赛大会” 2018
  3. linux中下载ftp文件
  4. 开发日记-20190522 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  5. th:text为null报错_小猿圈web前端之vue-cli项目打包完成后运行文件路径报错问题
  6. Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?
  7. GNN大有可为,从这篇开始学以致用
  8. springmvc面试题2021
  9. UI自学宝典,完整UI学习线路图
  10. 关于Jakarta EE软件包名称更改的思考
  11. You can't specify target table 'TS_AUTH_ADMIN' for update in FROM clause记录
  12. django安装与简介
  13. Windows线程同步--关键段和旋转锁
  14. C++资源之不完全导引(下)
  15. hightopo学习之旅一 -- 节点动画
  16. 2020年初冠状病毒大事记随笔
  17. 破解水卡教程 超详细
  18. matalb读取txt文件以及将数据写入txt文件
  19. ベルベット / 贝姐
  20. Tomcat JDBC Pool使用说明

热门文章

  1. Android——selector背景选择器的使用详解(二)
  2. 运维人员写项目方案及推进项目的基本流程思路
  3. Ubuntu 14.04 配置iptables防火墙
  4. cocos2d 字体颜色
  5. 不为人知的AI简史:人机共生梦想家,却意外促成互联网的出现
  6. Android基础控件TextClock和Chronometer的使用
  7. 数据库中字段设计与NULL值操作
  8. 错误 ORA-01102: cannot mount database in EXCLUSIVE mode 的处理方法
  9. 如何将开源项目部分代码作为private放在github上?
  10. 四、Hyper-v Server 2008r2 设置远程管理