12
返回列表 发新帖
楼主: KEN6503

[SQL] sql join 条件与性能

[复制链接]
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
11#
发表于 2018-1-18 23:07 | 只看该作者
你不是说改成HASH JOIN就好了?现在还有什么问题?修改之后的SQL和计划呢?

使用道具 举报

回复
论坛徽章:
13
2010新春纪念徽章
日期:2010-03-01 11:04:59技术图书徽章
日期:2018-03-01 10:21:49秀才
日期:2018-03-01 10:21:252015年新春福章
日期:2015-03-06 11:58:18喜羊羊
日期:2015-03-04 14:52:46优秀写手
日期:2014-04-22 06:00:18马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:082013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:56:01
12#
 楼主| 发表于 2018-1-20 12:40 | 只看该作者
newkid 发表于 2018-1-18 23:07
你不是说改成HASH JOIN就好了?现在还有什么问题?修改之后的SQL和计划呢?

我没有改sql, 只是加了hint。   /*+use_hash(a,b)*/ 加了hint之后的plan

  1. SQL_ID  drgs6c1dkn7h3, child number 0
  2. -------------------------------------

  3. Plan hash value: 3034424274

  4. -------------------------------------------------------------------------------------------------------------------------------------
  5. | Id  | Operation                            | Name                         | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
  6. -------------------------------------------------------------------------------------------------------------------------------------
  7. |   0 | SELECT STATEMENT                     |                              |       |       |   162K(100)|          |       |       |
  8. |*  1 |  HASH JOIN RIGHT OUTER               |                              |   690 | 32430 |   162K (13)| 00:11:42 |       |       |
  9. |   2 |   VIEW                               |                              |     5 |    90 |   128K (14)| 00:09:15 |       |       |
  10. |   3 |    NESTED LOOPS                      |                              |       |       |            |          |       |       |
  11. |   4 |     NESTED LOOPS                     |                              |     5 |   460 |   128K (14)| 00:09:15 |       |       |
  12. |*  5 |      HASH JOIN                       |                              |     5 |   265 |   128K (14)| 00:09:15 |       |       |
  13. |   6 |       MERGE JOIN CARTESIAN           |                              |    31 |   651 |     5   (0)| 00:00:01 |       |       |
  14. |*  7 |        TABLE ACCESS FULL             | ACCT_CRIT                    |     1 |    11 |     2   (0)| 00:00:01 |       |       |
  15. |   8 |        BUFFER SORT                   |                              |    61 |   610 |     3   (0)| 00:00:01 |       |       |
  16. |*  9 |         TABLE ACCESS FULL            | ACCT_TYP                     |    61 |   610 |     3   (0)| 00:00:01 |       |       |
  17. |  10 |       PARTITION RANGE SINGLE         |                              |   181 |  5792 |   128K (14)| 00:09:15 |   KEY |   KEY |
  18. |  11 |        PARTITION LIST SINGLE         |                              |   181 |  5792 |   128K (14)| 00:09:15 |       |       |
  19. |* 12 |         TABLE ACCESS FULL            | INST_DEL                     |   181 |  5792 |   128K (14)| 00:09:15 |   KEY |   KEY |
  20. |  13 |      PARTITION LIST SINGLE           |                              |     1 |       |     0   (0)|          |   KEY |   KEY |
  21. |* 14 |       INDEX UNIQUE SCAN              | XPK_INST                     |     1 |       |     0   (0)|          |   123 |   123 |
  22. |* 15 |     TABLE ACCESS BY LOCAL INDEX ROWID| INST                         |     1 |    39 |     1   (0)| 00:00:01 |   123 |   123 |
  23. |  16 |   PARTITION RANGE SINGLE             |                              |   690 | 20010 | 33826  (10)| 00:02:27 |   KEY |   KEY |
  24. |  17 |    PARTITION LIST SINGLE             |                              |   690 | 20010 | 33826  (10)| 00:02:27 |       |       |
  25. |* 18 |     TABLE ACCESS FULL                | PART_INS                     |   690 | 20010 | 33826  (10)| 00:02:27 |   KEY |   KEY |
  26. -------------------------------------------------------------------------------------------------------------------------------------

  27. Predicate Information (identified by operation id):
  28. ---------------------------------------------------

  29.    1 - access("A"."SRC_SYS_CODE"="B"."SRC_SYS_CODE" AND "B"."INS_ACCT_NMBR"=CASE
  30.               "A"."SRC_SYS_CODE" WHEN 'TSS' THEN TRIM("A"."INS_ACCT_NMBR_CHAR") ELSE
  31.               LTRIM(TRIM(UPPER("A"."INS_ACCT_NMBR_CHAR")),'0') END )
  32.    5 - access("DT"."ACCT_TYP_CD"="ATP"."ACCT_TYP_CD" AND "DT"."INSTR_STATUS_CD"="ST"."INSTR_STATUS_CD")
  33.    7 - filter("ST"."SRC_SYS_CODE"='QUT')
  34.    9 - filter("ATP"."INC_IND"<>'E')
  35.   12 - filter(("DT"."SRC_CODE"='QUT' AND "DT"."RUN_DT"='17-JAN-18'))
  36.   14 - access("B"."SRC_SYS_CODE"='QUT' AND "DT"."INST_KEY"="B"."INST_KEY")
  37.   15 - filter(("B"."ORIG_INS_ACCT_NMBR" IS NULL OR ("B"."SRC_SYS_CODE"='SITE' AND
  38.               "B"."INST_KEY"<>140382305410519 AND "B"."INST_KEY"<>140382477860519 AND "B"."INST_KEY"<>140382671970519
  39.               AND "B"."INST_KEY"<>140381720520519 AND "B"."INST_KEY"<>140382147600519 AND
  40.               "B"."INST_KEY"<>140381934160519 AND "B"."INST_KEY"<>140382175310519)))
  41.   18 - filter(("A"."SRC_SYS_CODE"='QUT' AND "A"."SRC_CODE"='BCF' AND
  42.               "A"."RUN_DT"='17-JAN-18'))
复制代码

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
13#
发表于 2018-1-20 14:16 来自手机 | 只看该作者
KEN6503 发表于 2018-1-11 02:27
谢谢,这是一个existing query,query写的很复杂, run的时间非常长。
另外,有一个问题想请教一下:我 ...

可以确定计划跑偏了,而不是你们DBA说的一切正常,之前我遇到和解决了太多类似的问题,其实,不是hang在那里,就是性能差,一直跑不完,如果收集统计信息不能解决,那就hint搞定吧,这种问题,改写搞定的几率不确定,但可能存在不稳定的因素。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表