暂无图片
sql优化
我来答
分享
1℃
2020-03-31
sql优化
暂无图片 5M

下面这条sql的consistent gets为70302,麻烦大神看一下有没有优化的方案。
SELECT m.stdcode “单位代码”, m.stdname “单位名称”,card.billcode “卡片编号”
from md_org m
left join gams_assetcard card
on m.recid = card.orgunit
left join (select a.objectid, a.cardstate
from gams_assetcard a
left join (select cc.objectid, max(cc.yewxlh) yewxlh
from gams_assetcard cc
where cc.jizrq < to_date(‘2020’,‘yyyy’)
group by cc.objectid) dd
on a.objectid = dd.objectid
where a.yewxlh = dd.yewxlh) temp
on temp.objectid = card.objectid
left join (select cc.objectid, min(cc.yewxlh) yewxlh
from gams_assetcard cc
where cc.auditstate = 2
and cc.caiwrzrq is not null
group by cc.objectid) tempYe
on tempYe.objectid = card.objectid
where card.yewxlh = tempYe.yewxlh
and to_char(card.jizrq, ‘yyyy’) = ‘2019’
and (temp.cardstate in (‘00’,‘01’,‘02’,‘03’,‘10’, ‘14’, ‘15’, ‘16’))
and card.QUDFSID = hextoraw(‘36B91A2620000021843A413C3B72743E’)
and not exists (select 1
from GAMS_JC_REFORM_ORGMAPPING rrr
where rrr.orgunit = card.orgunit
and rrr.recid = card.LAIYDJID)
and not exists (select 1
from tj_isjghz temp
where temp.orgunit = card.orgunit
and temp.cardobjectid = card.objectid)
ORDER BY m.stdcode
执行计划

Plan hash value: 1326741783



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


| 0 | SELECT STATEMENT | | 1 | 496| 27120 (1)| 00:05:26 |

| 1 | SORT ORDER BY | | 1 | 496| 27120 (1)| 00:05:26 |

| 2 | NESTED LOOPS | | 1 | 496| 27119 (1)| 00:05:26 |

| 3 | NESTED LOOPS | | 1 | 483| 27114 (1)| 00:05:26 |

| 4 | NESTED LOOPS | | 1 | 470| 27109 (1)| 00:05:26 |

| 5 | NESTED LOOPS ANTI | | 1 | 445| 27107 (1)| 00:05:26 |

| 6 | NESTED LOOPS ANTI | | 1 | 425| 27107 (1)| 00:05:26 |

| 7 | NESTED LOOPS | | 15 | 6075| 27107 (1)| 00:05:26 |

| 8 | TABLE ACCESS FULL | MD_ORG | 986 | 302K| 35 (0)| 00:00:01 |

|* 9 | TABLE ACCESS BY INDEX ROWID| GAMS_ASSETCARD | 1 | 91| 36 (0)| 00:00:01 |

|* 10 | INDEX RANGE SCAN | 6BDB3DB4BA4EF327 | 39 || 23 (0)| 00:00:01 |

|* 11 | INDEX RANGE SCAN | 45E17636B83C87F4 | 1159 | 23180| 0 (0)| 00:00:01 |

|* 12 | INDEX RANGE SCAN | 80FA2A1CCBF2764F | 1 | 20| 0 (0)| 00:00:01 |

|* 13 | INDEX RANGE SCAN | 4C7025CAF550ABF2_1 | 1 | 25| 2 (0)| 00:00:01 |

|* 14 | VIEW PUSHED PREDICATE | | 1 | 13| 5 (0)| 00:00:01 |

| 15 | SORT AGGREGATE | | 1 | 31| | |

|* 16 | TABLE ACCESS BY INDEX ROWID | GAMS_ASSETCARD | 1 | 31
| 5 (0)| 00:00:01 |

|* 17 | INDEX RANGE SCAN | 4C7025CAF550ABF2_1 | 1 || 3 (0)| 00:00:01 |

|* 18 | VIEW PUSHED PREDICATE | | 1 | 13| 5 (0)| 00:00:01 |

| 19 | SORT AGGREGATE | | 1 | 34| | |

|* 20 | TABLE ACCESS BY INDEX ROWID | GAMS_ASSETCARD | 1 | 34| 5 (0)| 00:00:01 |

|* 21 | INDEX RANGE SCAN | 4C7025CAF550ABF2_1 | 1 || 3 (0)| 00:00:01 |



Predicate Information (identified by operation id):

9 - filter(“CARD”.“QUDFSID”=HEXTORAW(‘36B91A2620000021843A413C3B72743E’) )
10 - access(“M”.“RECID”=“CARD”.“ORGUNIT”)
filter(TO_CHAR(INTERNAL_FUNCTION(“CARD”.“JIZRQ”),‘yyyy’)=‘2019’)
11 - access(“TEMP”.“ORGUNIT”=“CARD”.“ORGUNIT” AND “TEMP”.“CARDOBJECTID”=“CARD”.“OBJECTID”)

12 - access(“RRR”.“ORGUNIT”=“CARD”.“ORGUNIT” AND “RRR”.“RECID”=“CARD”.“LAIYDJID”)

13 - access(“A”.“OBJECTID”=“CARD”.“OBJECTID”)
filter(“A”.“CARDSTATE”=U’00’ OR “A”.“CARDSTATE”=U’01’ OR “A”.“CARDSTATE”=U’02’ OR
“A”.“CARDSTATE”=U’03’ OR “A”.“CARDSTATE”=U’10’ OR “A”.“CARDSTATE”=U’14’ OR “A”.“CARDSTATE”=U’15’
OR “A”.“CARDSTATE”=U’16’)
14 - filter(“A”.“YEWXLH”=“DD”.“YEWXLH”)
16 - filter(“CC”.“JIZRQ”<TO_DATE(‘2020’,‘yyyy’))
17 - access(“CC”.“OBJECTID”=“A”.“OBJECTID”)
18 - filter(“CARD”.“YEWXLH”=“TEMPYE”.“YEWXLH”)
20 - filter(“CC”.“CAIWRZRQ” IS NOT NULL)
21 - access(“CC”.“OBJECTID”=“CARD”.“OBJECTID” AND “CC”.“AUDITSTATE”=2)
filter(“CC”.“AUDITSTATE”=2)

Note

  • dynamic sampling used for this statement (level=2)

统计信息

     25  recursive calls
      0  db block gets
  70302  consistent gets
      0  physical reads
      0  redo size
  50831  bytes sent via SQL*Net to client
   1377  bytes received via SQL*Net from client
     80  SQL*Net roundtrips to/from client
      1  sorts (memory)
      0  sorts (disk)
   1172  rows processed
复制

SQL>

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
徐孝亮

取个sql_monitor看看
表结构贴一下

暂无图片 评论
暂无图片 有用 0
打赏 0
刘峰

执行计划看着很乱,给个sqlhc报告。
另外gams_assetcard过滤之后的数据量是多少?
temp、tempYe子查询返回数据量多少?

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
可以把oracle自动生成的表全部删掉换成导入的数据库吗?
回答 1
自动生成的表指的是哪些表呢?
bbed对应offset已全部修改为何RESETLOGS还不一致
回答 3
检查:resetlogscount,scn这两个值可能被你修改了。如果resetlogs的信息不同,会被认为文件不属于这个化身。
Oracle删除某张表的大数据量,怎么快速删除?大概有两亿条数据
回答 1
已采纳
只有droptable和truncatetable才能快速删除这么多的数据。如果表是分区表,直接drop对应分区即可。如果表中删除掉数据后只剩少量数据,则先新建一个临时表将要保留的数据插入到临时表中。
SOA套件JMS消息中间件文件锁定问题如何解锁?
回答 1
lsof查看哪个进程在使用该文件,然后kill进程就可以了
oracle磁盘组镜像问题
回答 2
做N组GROUP,每组2lun
Oracle新建了表空间test,用scott用户建了个表t1在表空间test上,建表成功,插入数据失败?
回答 1
已采纳
你的scott用户有表空间test的写入权限吗?建表t1成功不代表往t1可以插入数据。UNLIMITEDTABLESPACE权限scott有吗?我猜应该给这个权限就可以了。
SQL ORDER BY READS(GETS) 和INSERT语句有关?
回答 3
已采纳
insert语句也会产生READS(GETS),因为插入一条记录,数据库就要维护他的索引,需要读索引块,你的表上有lob,至少会有一个lob的索引。另外就是oracle找空块的时候也是会产生读io的。
oracle免费版切换为正式版如何切换,需要重新装库么
回答 2
Express版本就是免费版本,如果是Express版本到企业版,需要重新安装软件、建库、导入数据的。
ADG灾备日志应用节点内存泄漏-疑问
回答 2
没有看出内存泄露的迹象,你的判断从何而来?TOP里看到的RSS、SIZ是正常的。
oracle怎么查整个库里某个时间后有新增或修改的库?
回答 1
已采纳
通过v$database查看创建时间