arcgis select by attributes一次选多个_优化体系--记一次生产数据库sql优化过程--组合索引...

概述

最近比较有空,所以看了一些问题sql,顺便优化一下,做个简单记录。


问题sql

SQL(c212jfrj1m0fg) 在采样期平均单次执行逻辑读为 106205.83, 其最新执行计划涉及 2 个对象,平均单个对象的逻辑读较大。

在其最新执行计划中,发现较差的执行步骤:

2:TABLE ACCESS FULL (TABLE:RFUSER.FSL_OR [953.44 MB]);

1、查看具体sql:

select listagg(sql_text,' ') within group (order by piece) from v$sqltext where sql_id = 'c212jfrj1m0fg' group by sql_id

查出sql如下:

UPDATE FSL_OR SET SEND = '1' WHERE ORDERNUMBER = 'A' || '-' || : B2 || '-' || :B1 AND ORTYPE='实际订单';

2、查看执行计划

这里很明显是FSL_OR SET表走了全表扫描。

c87e7d025a66bc54d0a00d38028b208c.png

3、获取sql相关信息

sqlplus / as sysdba @/home/oracle/sql/spoolsql.sql
fe5ffdd71716dd745d5865622f98f1e0.png

相关信息:

64e8e11031be08c83a01c37b189393d8.png

4、目前索引情况

查看目前索引情况,截图如下:

1b22277ad67e0958693ae1bff446e580.png

5、考虑增加组合索引

--大表需加online这个参数,除了create过程中index保持online状态,Oracle还会在create index之前等待所有DML操作结束,然后得到DDL锁,开始createcreate index IDX_FSL_OR_4 on fsl_or(ordernumber,ortype) tablespace rf_indx online;--如果不commit,上面的操作就会一直holdcommit;
8bb084c743bda08c0cff621585bc5e14.png

//分析索引

BEGINSYS.DBMS_STATS.GATHER_INDEX_STATS (OwnName => 'RFUSER', IndName => 'IDX_FSL_OR_4', Estimate_Percent => 10, Degree => SYS.DBMS_STATS.DEFAULT_DEGREE, No_Invalidate => FALSE);END;
d0195fdae1ffe87adb39098fc2b899e5.png

6、查看最新执行计划

添加索引后一定要再看下执行计划是否索引生效。

a419a82d37affd16cbf0e8e542c9fb3f.png

优化后结果:FSL_OR由全表扫描改成走索引范围扫描,cost由32793降为3。


后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

b3e01f00b63a2293299638a7e4a2388b.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值