开发谓词放错引起的尴尬

原创 2013年12月05日 16:45:09
explain plan for UPDATE DWF.F_PTY_INDIV O
   SET END_DT = TO_DATE('2012-12-31', 'YYYY-MM-DD')
 WHERE EXISTS (SELECT 1
          FROM DWF.F_PTY_INDIV F
         WHERE O.PTY_ID = PTY_ID
           AND O.CORP_ORG = CORP_ORG
           AND O.SOURCE_CODE = 'CMS'
           AND SOURCE_CODE = 'CMS'
           AND F.DW_DATA_DT = TO_DATE('2012-12-31', 'YYYY-MM-DD'))
   AND O.DW_DATA_DT <> TO_DATE('2012-12-31', 'YYYY-MM-DD')
   AND O.END_DT = TO_DATE('29991231', 'YYYY-MM-DD');
           
           
           select * from table(dbms_xplan.display());
Plan hash value: 4112899302
 
-----------------------------------------------------------------------------------------------
| Id  | Operation                      | Name         | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT               |              |     1 |    44 |   373K  (1)| 01:14:48 |
|   1 |  UPDATE                        | F_PTY_INDIV  |       |       |            |          |
|*  2 |   FILTER                       |              |       |       |            |          |
|*  3 |    TABLE ACCESS FULL           | F_PTY_INDIV  |  1589 | 69916 |  1149   (2)| 00:00:14 |
|*  4 |    FILTER                      |              |       |       |            |          |
|*  5 |     TABLE ACCESS BY INDEX ROWID| F_PTY_INDIV  |     1 |    36 |   469   (0)| 00:00:06 |
|*  6 |      INDEX SKIP SCAN           | SYS_C0022051 |     1 |       |   468   (0)| 00:00:06 |
-----------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - filter( EXISTS (SELECT 0 FROM "DWF"."F_PTY_INDIV" "F" WHERE :B1='CMS' AND 
              "F"."DW_DATA_DT"=TO_DATE(' 2012-12-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND 
              "PTY_ID"=:B2 AND "CORP_ORG"=:B3 AND "SOURCE_CODE"='CMS'))
   3 - filter("O"."END_DT"=TO_DATE('29991231','YYYY-MM-DD') AND 
              "O"."DW_DATA_DT"<>TO_DATE(' 2012-12-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
   4 - filter(:B1='CMS')
   5 - filter("F"."DW_DATA_DT"=TO_DATE(' 2012-12-31 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss'))
   6 - access("PTY_ID"=:B1 AND "SOURCE_CODE"='CMS' AND "CORP_ORG"=:B2)
       filter("PTY_ID"=:B1 AND "CORP_ORG"=:B2 AND "SOURCE_CODE"='CMS')
----------------------------------------------------------------------------------------------------------
开发居然把AND O.SOURCE_CODE = 'CMS'放到了子查询里,真是无语
explain plan for UPDATE DWF.F_PTY_INDIV O
   SET END_DT = TO_DATE('2012-12-31', 'YYYY-MM-DD')
 WHERE O.SOURCE_CODE = 'CMS' and 
 EXISTS (SELECT 1
          FROM DWF.F_PTY_INDIV F
         WHERE O.PTY_ID = PTY_ID
           AND O.CORP_ORG = CORP_ORG
          /* AND O.SOURCE_CODE = 'CMS'*/
           AND SOURCE_CODE = 'CMS'
           AND F.DW_DATA_DT = TO_DATE('2012-12-31', 'YYYY-MM-DD'))
   AND O.DW_DATA_DT <> TO_DATE('2012-12-31', 'YYYY-MM-DD')
   AND O.END_DT = TO_DATE('29991231', 'YYYY-MM-DD')
   
   select * from table(dbms_xplan.display());
   Plan hash value: 3463369635
 
-------------------------------------------------------------------------------------
| Id  | Operation             | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT      |             |     1 |    80 |  2286   (2)| 00:00:28 |
|   1 |  UPDATE               | F_PTY_INDIV |       |       |            |          |
|*  2 |   HASH JOIN RIGHT SEMI|             |     1 |    80 |  2286   (2)| 00:00:28 |
|*  3 |    TABLE ACCESS FULL  | F_PTY_INDIV |   286 | 10296 |  1141   (2)| 00:00:14 |
|*  4 |    TABLE ACCESS FULL  | F_PTY_INDIV |   740 | 32560 |  1145   (2)| 00:00:14 |
-------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - access("O"."PTY_ID"="PTY_ID" AND "O"."CORP_ORG"="CORP_ORG")
   3 - filter("F"."DW_DATA_DT"=TO_DATE(' 2012-12-31 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss') AND "SOURCE_CODE"='CMS')
   4 - filter("O"."SOURCE_CODE"='CMS' AND 
              "O"."END_DT"=TO_DATE('29991231','YYYY-MM-DD') AND 
              "O"."DW_DATA_DT"<>TO_DATE(' 2012-12-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))


相关文章推荐

【android】图片放错文件夹引起显示大小不同的原因与屏幕适配原理

大纲 1、android中res目录下的文件夹所对应屏幕尺寸 2、用dp表示尺寸的原理 3、对于720p尺寸的适配需要注意什么 4、ui切图按什么尺寸给最好 参考:htt...

Android知识总结:图片放错mipmap文件夹导致内存泄露的问题

背景最近开始着手优化app的性能。其中有这样一个activity,只要手机一开启内存就会飙升二十多M, 之前认为可能是其中大的图片资源解压导致,但是通过查看记录内存的.hprof文件,这个activi...
  • lidec
  • lidec
  • 2016年12月01日 21:53
  • 2908

谷歌首席人才官:最差的员工可能是放错位置的天才

拉斯洛·博克,谷歌公司首席人才官,摘自拉斯洛·博克所著《重新定义团队:谷歌如何工作》一书里关于人才管理的观点:最差的员工可能是放错位置的天才! 如何提升团队的能力和表现? 谷歌首席人才官拉...

开发,一个尴尬的角色

最近测试的主管找我们开发的主管,说我们以后所有的需求,开发都要求写自测报告,不分申请测试还是自测的,在提交测试之前一并提交给测试,让测试看有什么问题。从质量保证上来说,我是一百个赞同,我愿意对每一个方...

iOS开发之谓词Predicate和对象数组的排序

我们在开发中经常使用的Predicate谓语,主要是正则表达式的使用,今天给大家简单的讲讲怎样去使用谓语。因为内容比较简单,所以直接上代码展示:NSMutableArray *people_arr =...
  • hbblzjy
  • hbblzjy
  • 2017年06月14日 16:07
  • 263

iOS开发 根据正则表达式谓词(NSPredicate)判断邮箱,手机号码,身份证...

最近在做一个项目,其中有一些需要自己判断是否输入正确以否,比如手机号,邮箱,还有其他等等 一.NSPredicate的基本语法 1.比较运算符:=、==、>=、=>、、 =、==:判断两个表...

【iOS开发技术】NSPredicate谓词的用法 数组过滤

NSPredicate是什么 NSPredicate:谓词 字面翻译是这个意思,但是我觉得谓词这个词太难以理解了 NSPredicate的具体用途应该还是过滤,类似于过滤条件之类的,相当于一...

iOS开发,谓词(NSPredicate)的用法:(一)基本用法

在iOS开发中,系统提供了NSPredicate这个类给我们进行一些匹配、筛选操作,非常方便。在没有用这个类时,我们要获取两个数组中某些特定的元素时,需要写代码一一对比,但是使用了这个类,只需要三四行...

移动开发(IOS) – Objective-C-10-KVC、谓词、KVO与通知

移动开发(IOS) – Objective-C-10-KVC、谓词、KVO与通知 By docoder in 博客, 学习 on 2014/05/31 1.KVC 1.1.基本概念...

iOS开发基础之谓词(NSPredicate)的使用

本文为投稿文章,作者:sunny_zl 首先,我们需要知道何谓谓词,让我们看看官方的解释:The NSPredicate class is used to define logical conditi...
  • hbblzjy
  • hbblzjy
  • 2017年04月24日 11:43
  • 250
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开发谓词放错引起的尴尬
举报原因:
原因补充:

(最多只允许输入30个字)