1. SQL> select *
  2. from fxqd_list_20131115_new
  3. where (acct_no, oper_no, seqno, trans_amt) not in
  4. (select acct_no, oper_no, seqno, trans_amt
  5. from fxqd_list
  6. where reg_date = to_date('20131115', 'yyyymmdd'))
  7. and list_type = '1'; 2 3 4 5 6 7
  8.  
  9. 103 rows selected.
  10.  
  11. Execution Plan
  12. ----------------------------------------------------------
  13. Plan hash value: 196590019
  14.  
  15. -------------------------------------------------------------------------------------------------------
  16. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
  17. -------------------------------------------------------------------------------------------------------
  18. | 0 | SELECT STATEMENT | | 4145 | 10M| 13079 (1)| 00:02:37 |
  19. |* 1 | FILTER | | | | | |
  20. |* 2 | TABLE ACCESS FULL | FXQD_LIST_20131115_NEW | 4145 | 10M| 180 (2)| 00:00:03 |
  21. |* 3 | TABLE ACCESS BY INDEX ROWID| FXQD_LIST | 2036 | 157K| 4 (0)| 00:00:01 |
  22. |* 4 | INDEX RANGE SCAN | FXQD_LIST_IDX_1 | 2500 | | 3 (0)| 00:00:01 |
  23. -------------------------------------------------------------------------------------------------------
  24.  
  25. Predicate Information (identified by operation id):
  26. ---------------------------------------------------
  27.  
  28. 1 - filter( NOT EXISTS (SELECT /*+ */ 0 FROM "FXQD_LIST" "FXQD_LIST" WHERE
  29. "REG_DATE"=TO_DATE(' 2013-11-15 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND LNNVL("ACCT_NO"<>:B1)
  30. AND LNNVL("OPER_NO"<>:B2) AND LNNVL("SEQNO"<>:B3) AND LNNVL("TRANS_AMT"<>:B4)))
  31. 2 - filter("LIST_TYPE"='1')
  32. 3 - filter(LNNVL("ACCT_NO"<>:B1) AND LNNVL("OPER_NO"<>:B2) AND LNNVL("SEQNO"<>:B3) AND
  33. LNNVL("TRANS_AMT"<>:B4))
  34. 4 - access("REG_DATE"=TO_DATE(' 2013-11-15 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
  35.  
  36. Note
  37. -----
  38. - dynamic sampling used for this statement
  39.  
  40. Statistics
  41. ----------------------------------------------------------
  42. 3505 recursive calls
  43. 2 db block gets
  44. 1564672 consistent gets
  45. 0 physical reads
  46. 0 redo size
  47. 43694 bytes sent via SQL*Net to client
  48. 558 bytes received via SQL*Net from client
  49. 8 SQL*Net roundtrips to/from client
  50. 16 sorts (memory)
  51. 0 sorts (disk)
  52. 103 rows processed
  53.  
  54. SQL> with D as (select /*+materialize*/ acct_no, oper_no, seqno, trans_amt
  55. from fxqd_list
  56. where reg_date = to_date('20131115', 'yyyymmdd'))
  57. select * from fxqd_list_20131115_new where (acct_no, oper_no, seqno, trans_amt) not in
  58. (select acct_no, oper_no, seqno, trans_amt from D)
  59. and list_type = '1'; 2 3 4 5 6
  60.  
  61. 103 rows selected.
  62.  
  63. Execution Plan
  64. ----------------------------------------------------------
  65. Plan hash value: 1295716977
  66.  
  67. -------------------------------------------------------------------------------------------------------------
  68. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
  69. -------------------------------------------------------------------------------------------------------------
  70. | 0 | SELECT STATEMENT | | 4145 | 10M| 26570 (1)| 00:05:19 |
  71. | 1 | TEMP TABLE TRANSFORMATION | | | | | |
  72. | 2 | LOAD AS SELECT | FXQD_LIST_20131115_NEW | | | | |
  73. | 3 | TABLE ACCESS BY INDEX ROWID| FXQD_LIST | 2500 | 192K| 389 (1)| 00:00:05 |
  74. |* 4 | INDEX RANGE SCAN | FXQD_LIST_IDX_1 | 2500 | | 10 (0)| 00:00:01 |
  75. |* 5 | FILTER | | | | | |
  76. |* 6 | TABLE ACCESS FULL | FXQD_LIST_20131115_NEW | 4145 | 10M| 180 (2)| 00:00:03 |
  77. |* 7 | VIEW | | 2500 | 170K| 8 (0)| 00:00:01 |
  78. | 8 | TABLE ACCESS FULL | SYS_TEMP_0FD9D66DD_A4F53A1D | 2500 | 170K| 8 (0)| 00:00:01 |
  79. -------------------------------------------------------------------------------------------------------------
  80.  
  81. Predicate Information (identified by operation id):
  82. ---------------------------------------------------
  83.  
  84. 4 - access("REG_DATE"=TO_DATE(' 2013-11-15 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
  85. 5 - filter( NOT EXISTS (SELECT /*+ */ 0 FROM (SELECT /*+ CACHE_TEMP_TABLE ("T1") */ "C0"
  86. "ACCT_NO","C1" "OPER_NO","C2" "SEQNO","C3" "TRANS_AMT" FROM "SYS"."SYS_TEMP_0FD9D66DD_A4F53A1D"
  87. "T1") "D" WHERE LNNVL("ACCT_NO"<>:B1) AND LNNVL("OPER_NO"<>:B2) AND LNNVL("SEQNO"<>:B3) AND
  88. LNNVL("TRANS_AMT"<>:B4)))
  89. 6 - filter("LIST_TYPE"='1')
  90. 7 - filter(LNNVL("ACCT_NO"<>:B1) AND LNNVL("OPER_NO"<>:B2) AND LNNVL("SEQNO"<>:B3) AND
  91. LNNVL("TRANS_AMT"<>:B4))
  92.  
  93. Note
  94. -----
  95. - dynamic sampling used for this statement
  96.  
  97. Statistics
  98. ----------------------------------------------------------
  99. 2365 recursive calls
  100. 64 db block gets
  101. 124525 consistent gets
  102. 55 physical reads
  103. 1516 redo size
  104. 43694 bytes sent via SQL*Net to client
  105. 558 bytes received via SQL*Net from client
  106. 8 SQL*Net roundtrips to/from client
  107. 46 sorts (memory)
  108. 0 sorts (disk)
  109. 103 rows processed

WITH AS 优化逻辑读的更多相关文章

  1. 初谈SQL Server逻辑读、物理读、预读

    前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...

  2. Oracle逻辑读详解

    1.物理读(physical read) 当数据块第一次读取到,就会缓存到buffer cache 中,而第二次读取和修改该数据块时就在内存buffer cache 了 以下是例子: 1.1  第一次 ...

  3. 初谈SQL Server逻辑读、物理读、预读【转】

    前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...

  4. 逻辑读为何消耗CPU?

    在数据库系统中,经常会看到这个说法:“逻辑读很消耗CPU”,然后开始把这句话当作一个定理来使用.但是为什么“同样是读,为什么逻辑读会使用那么多CPU?” 查了一些资料,配合自己的理解,有下面几点体会: ...

  5. sqlserver性能调优中的逻辑读,物理读,预读是什么意思

    表 'T_EPZ_INOUT_ENTRY_DETAIL'.扫描计数 1,逻辑读 4825 次,物理读 6 次,预读 19672 次.SQL SERVER 数据库引擎当遇到一个查询语句时,SQL SER ...

  6. ORACLE 物理读 逻辑读 一致性读 当前模式读总结浅析

    在ORACLE数据库中有物理读(Physical Reads).逻辑读(Logical Reads).一致性读(Consistant Get).当前模式读(DB Block Gets)等诸多概念,如果 ...

  7. SQL Server逻辑读、预读和物理读

    SQL Server数据存储的形式 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存 ...

  8. SQL Server 中的逻辑读与物理读

    首先要理解逻辑读和物理读: 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存再次去读 ...

  9. SQL逻辑读变成零

    使用缓存HINT 让逻辑读变成0. create table t as select * from dba_objects; insert into t select * from t; commit ...

随机推荐

  1. iOS UIKit:CollectionView之设计 (1)

    collection view(UICollectionView对象)使用灵活和可扩展的布局来描述有序的数据项,其一般情况下以网格的形式来展示内容,但并非一定如此. 1 基础 为了将数据展示在屏幕中, ...

  2. Windows Server 2008中关闭事件跟踪程序的方法

    Windows Server 2008跟Windows Server 2003一样,在关机的时候会弹出一个“关闭事件跟踪程序”窗口,当然微软这么做是处于安全的考虑啦,但是如果我们只是个人用用的话,那就 ...

  3. jwplayer 源代码重新编译

    由于原来下载的jwplaery播放器中带有官方的播放统计信息,需要从官方加载统计js脚本,影响播放器加载速度,因此从官方github站点上下载播放器进行重新编译操作,现记录过程如下. 下载最新的jwp ...

  4. ASP.Net免费发送短信-阿里大鱼短信接口

    有点短信余额 不用白不用 3月1号就过期了 情人节做了个免费发短信的 http://love.issuc.com/ 固定短信模板 [活动验证]您正在参加XXX的OOO活动,请确认系本人申请.需要的可以 ...

  5. 类似与三元表达式的 json 读取值

    需要先在项目中添加 json的dll json 序列里面的key在item.feeType里面必须存在 否则会报 未将对象引用到实例 myDr["feeType"] = Newto ...

  6. Mvc网站开发知识

    网站开发基本本步骤 mvc是一个设计模式 网站开发前台页面技术 页面设计:Html css+Div 页面特效:JavaScript,jQuery oop编程核心公共技能 c#基础语法与程序逻辑 面向对 ...

  7. 关于基于.net的WEB程序开发所需要的一些技术归纳

    前提: 最近公司里有一个同事,年龄比我大几岁,但是由于是转行来做开发的,许多的关于.net开发技术不是很入行,所以总是会问我一些东西,基于自己以前的一些 经验,总是会愿意给他讲一些总结性的东西,希望他 ...

  8. 在CentOS6.0上安装Oracle 11gR2 (11.2.0.1)以及基本的配置(一)

    首先安装CentOS6.0   就不用说了.安装即可.唯一需要注意的就是后面Oracle 11G Installation guide中的Checking the Software Requireme ...

  9. ACM YTU 《挑战编程》第一章 入门 Problem E: Graphical Editor

    Description Graphical editors such as Photoshop allow us to alter bit-mapped images in the same way ...

  10. 获取动态SQL查询语句返回值(sp_executesql)

    在写存储过程时经常会遇到需要拼接SQL语句的情况,一般情况下仅仅是为了执行拼接后的语句使用exec(@sql)即可. 而今天的一个存储过程却需要获取动态SQL的查询结果. 需求描述:在某表中根据Id值 ...