首页 > 数据库技术 > 详细

性能测试 | 记一次生产数据库sql由451s优化为0.4s的过程

时间:2019-09-03 11:10:08      阅读:67      评论:0      收藏:0      [点我收藏+]

概述

最近开发说某个接口跑的很慢,排查了下发现其中一条sql,数据量不大,但居然要跑451s,下面简单记录一下优化的过程。


问题sql

SELECT l.location_gid ENUMVALUE, l.location_name DISPVALUE
FROM servprov s, location l
WHERE s.domain_name = ‘FSL2‘
AND s.servprov_gid = l.location_gid
AND EXISTS (SELECT 1
FROM fsl2_fee_split f
WHERE f.servprov_gid = l.location_gid
AND start_time > SYSDATE - 60)
ORDER BY 1 DESC, 2
技术分享图片


1、数据量

可以看到只是其中一张表上百万数据,但也不是很大,然后还有两张小表。

技术分享图片


2、索引情况

观察大表的索引情况,发现用到了其中一个索引。

技术分享图片


3、查看执行计划

用F5看这执行计划没多大问题,也是小表去驱动大表。

技术分享图片


4、去掉时间

把这条sql去掉时间的条件发现只需要0.29s。

技术分享图片


5、建立索引

考虑去掉之前的索引,建联合索引

create index IND_FEE_SERVPROV_GID2 on FSL2_FEE_SPLIT(SERVPROV_GID,start_time)
tablespace INDX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 1M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
);
drop index IND_FEE_SERVPROV_GID;
技术分享图片


6、测试验证

从451s到0.4s,结果正确,满足需求,先这样了。

技术分享图片

执行计划保持不变。

技术分享图片


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

技术分享图片

性能测试 | 记一次生产数据库sql由451s优化为0.4s的过程

原文:https://www.cnblogs.com/wyf0518/p/11451011.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!