时间:2021-07-01 10:21:17 帮助过:13人阅读
select np.nodecode , np.nodename, d.deviceid, d.devicename, d.loopaddress, p.respara, p.rxcrcerror, p.txcrcerror from perf_t_ponport p,device d, node c,node np where p.resid = d.deviceid and d.nodecode = c.nodecode and c.citynodecode = np.nodecode and c.nodecode in (SELECT S.NODECODE FROM SINGLEUSERNODEAUTH S WHERE S.NETUSERID = ‘admin‘ AND S.AUTHTYPE = ‘VIEW‘) and d.changetype = 0 and p.coltime between trunc(sysdate-1,‘dd‘) and trunc(sysdate,‘dd‘) and p.rxcrcerror is not null and p.rxcrcerror >0 order by p.rxcrcerror desc)select *from pwhere rownum <=10查看执行计划:id为4的filter过滤条件为filter(TRUNC(SYSDATE@!-1,‘fmdd‘)<=TRUNC(SYSDATE@!,‘fmdd‘))。 查看id为9的执行计划访问分区的方式为:PARTITION RANGE ITERATOR。 说明分区表PERF_T_PONPORT的分区列的条件导致了性能压力。coltime的列都是yyyy/mm/dd的格式,因此可以将PERF_T_PONPORT的分区列的条件条件改写为:(p.coltime =trunc(sysdate-1,‘dd‘) or p.coltime =trunc(sysdate,‘dd‘) )。
SQL> explain plan for with p as(2 select np.nodecode , np.nodename, d.deviceid, d.devicename, d.loopaddress, p.respara, p.rxcrcerror, p.txcrcerror3 from perf_t_ponport p,device d, node c,node np4 where p.resid = d.deviceid5 and d.nodecode = c.nodecode6 and c.citynodecode = np.nodecode7 and c.nodecode in (SELECT S.NODECODE FROM SINGLEUSERNODEAUTH S WHERE S.NETUSERID = ‘admin‘ AND S.AUTHTYPE = ‘VIEW‘)8 and d.changetype = 09 and p.coltime between trunc(sysdate-1,‘dd‘) and trunc(sysdate,‘dd‘)10 and p.rxcrcerror is not null11 and p.rxcrcerror >012 order by p.rxcrcerror desc13 )14 select *15 from p16 where rownum <=1017 ;已解释。SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT----------------------------------------------------------------------------------------------------Plan hash value: 733587010----------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |----------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 10 | 3430 | 1125K (19)| 03:45:09 | | ||* 1 | COUNT STOPKEY | | | | | | | || 2 | VIEW | | 133 | 45619 | 1125K (19)| 03:45:09 | | ||* 3 | SORT ORDER BY STOPKEY | | 133 | 22743 | 1125K (19)| 03:45:09 | | ||* 4 | FILTER | | | | | | | ||* 5 | HASH JOIN | | 133 | 22743 | 1125K (19)| 03:45:09 | | ||* 6 | HASH JOIN SEMI | | 133 | 19950 | 1125K (19)| 03:45:08 | | ||* 7 | HASH JOIN | | 219 | 28251 | 1125K (19)| 03:45:08 | | || 8 | NESTED LOOPS | | 219 | 25185 | 1125K (19)| 03:45:08 | | || 9 | PARTITION RANGE ITERATOR | | 219 | 10074 | 1125K (19)| 03:45:03 | KEY | KEY ||* 10 | TABLE ACCESS FULL | PERF_T_PONPORT | 219 | 10074 | 1125K (19)| 03:45:03 | KEY | KE| 11 | TABLE ACCESS BY INDEX ROWID| DEVICE | 1 | 69 | 2 (0)| 00:00:01 | ||* 12 | INDEX UNIQUE SCAN | PK_DEVICE | 1 | | 1 (0)| 00:00:01 | || 13 | TABLE ACCESS FULL | NODE | 1214 | 16996 | 8 (0)| 00:00:01 | | ||* 14 | INDEX RANGE SCAN | SYS_C00543203 | 1167 | 24507 | 10 (0)| 00:00:01 | || 15 | TABLE ACCESS FULL | NODE | 1214 | 25494 | 8 (0)| 00:00:01 | |----------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------1 - filter(ROWNUM<=10)3 - filter(ROWNUM<=10)4 - filter(TRUNC(SYSDATE@!-1,‘fmdd‘)<=TRUNC(SYSDATE@!,‘fmdd‘))5 - access("C"."CITYNODECODE"="NP"."NODECODE")6 - access("C"."NODECODE"="S"."NODECODE")7 - access("D"."NODECODE"="C"."NODECODE")10 - filter("P"."RXCRCERROR" IS NOT NULL AND "P"."RXCRCERROR">0 AND"P"."COLTIME">=TRUNC(SYSDATE@!-1,‘fmdd‘) AND "P"."COLTIME"<=TRUNC(SYSDATE@!,‘fmdd‘))12 - access("P"."RESID"="D"."DEVICEID" AND "D"."CHANGETYPE"=0)14 - access("S"."NETUSERID"=‘admin‘ AND "S"."AUTHTYPE"=‘VIEW‘)已选择36行。
with p as(select np.nodecode , np.nodename, d.deviceid, d.devicename, d.loopaddress, p.respara, p.rxcrcerror, p.txcrcerrorfrom perf_t_ponport p,device d, node c,node npwhere p.resid = d.deviceidand d.nodecode = c.nodecodeand c.citynodecode = np.nodecodeand d.changetype = 0and c.nodecode in (SELECT S.NODECODE FROM SINGLEUSERNODEAUTH S WHERE S.NETUSERID = ‘admin‘ AND S.AUTHTYPE = ‘VIEW‘)and (p.coltime =trunc(sysdate-1,‘dd‘) or p.coltime =trunc(sysdate,‘dd‘) )and p.rxcrcerror is not nulland p.rxcrcerror >0order by p.rxcrcerror desc)select *from pwhere rownum <=10;
SQL> explain plan for with p as(2 select np.nodecode , np.nodename, d.deviceid, d.devicename, d.loopaddress, p.respara, p.rxcrcerror, p.txcrcerror3 from perf_t_ponport p,device d, node c,node np4 where p.resid = d.deviceid5 and d.nodecode = c.nodecode6 and c.citynodecode = np.nodecode7 and d.changetype = 08 and c.nodecode in (SELECT S.NODECODE FROM SINGLEUSERNODEAUTH S WHERE S.NETUSERID = ‘admin‘ AND S.AUTHTYPE = ‘VIEW‘)9 and (p.coltime =trunc(sysdate-1,‘dd‘) or p.coltime =trunc(sysdate,‘dd‘) )10 and p.rxcrcerror is not null11 and p.rxcrcerror >012 order by p.rxcrcerror desc13 )14 select *15 from p16 where rownum <=10;已解释。SQL>SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT----------------------------------------------------------------------------------------------------Plan hash value: 2287749996----------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |----------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 10 | 3430 | 915 (2)| 00:00:11 | | ||* 1 | COUNT STOPKEY | | | | | | | || 2 | VIEW | | 266 | 91238 | 915 (2)| 00:00:11 | | ||* 3 | SORT ORDER BY STOPKEY | | 266 | 45486 | 915 (2)| 00:00:11 | | ||* 4 | HASH JOIN | | 266 | 45486 | 915 (2)| 00:00:11 | | || 5 | TABLE ACCESS FULL | NODE | 1214 | 25494 | 8 (0)| 00:00:01 | | ||* 6 | HASH JOIN RIGHT SEMI | | 267 | 40050 | 905 (2)| 00:00:11 | | ||* 7 | INDEX RANGE SCAN | SYS_C00543203 | 1167 | 24507 | 10 (0)| 00:00:01 | ||* 8 | HASH JOIN | | 437 | 56373 | 895 (2)| 00:00:11 | | || 9 | TABLE ACCESS FULL | NODE | 1214 | 16996 | 8 (0)| 00:00:01 | | || 10 | NESTED LOOPS