文档章节

尽量减少子表的数据量

之渊
 之渊
发布于 2018/11/19 14:12
字数 389
阅读 4
收藏 0

新上线一个功能,在用户中心里面, 之前这个功能是在其他模板的, 因为并发访问量低,所以一直没有问题。

结果在用户中心首页里面就卡死了, 网站都快蹦了!!!

开始是因为我查询的量太大了,因为我预测一般这个功能的数据量不大,一次全查询出来,这样用户每次 操作的时候

不需要ajax了,提高了体验。

最后 是 SQL写不好, 子表查询的数据量太大了,而且并发量也多,所以出现了这个问题


本来SQL是这样的
select t.loanSign_id,t.tenderMoney,t.interest,lb.loanNumber,rr.preRepayDate,
rr.is_prepayment,rr.prepayment_min_day,rr.id,l.useDay 
    		 from ( select 
    		 sum(lc.tenderMoney) as tenderMoney,sum(lc.interest) as interest,lc.userbasicinfo_id,lc.loanSign_id 
    		 from loanrecord lc join loansign loan on lc.loanSign_id=loan.id WHERE loan.loanstate=3 
    		 group by lc.loanSign_id,lc.userbasicinfo_id 
    		 ) t join repaymentrecord rr on rr.loanSign_id=t.loanSign_id JOIN loansignbasics lb ON t.loanSign_id=lb.id 
    		  join loansign l on t.loanSign_id=l.id 
    		 WHERE  t.userbasicinfo_id = 93 AND rr.repayState IN (1,3) 
    		 ORDER BY rr.preRepayDate ASC,lb.loannumber ASC 


因为 子表 t 
( select 
    		 sum(lc.tenderMoney) as tenderMoney,sum(lc.interest) as interest,lc.userbasicinfo_id,lc.loanSign_id 
    		 from loanrecord lc join loansign loan on lc.loanSign_id=loan.id WHERE loan.loanstate=3 
    		 group by lc.loanSign_id,lc.userbasicinfo_id 
    		 ) t

没有加上 用户id 的 过滤,只在 where里面 过滤了,所以导致了这个问题

 

© 著作权归作者所有

之渊
粉丝 14
博文 649
码字总数 200420
作品 0
佛山
程序员
私信 提问
Sql养成一个好习惯是一笔财富 1

我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能...

五味格子
2011/05/30
49
0
一些sql优化的方法

1.避免出现SELECT * FROM table 语句,要明确查出的字段。 2.在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。 3.查询时尽可能使用索引覆盖...

XiaoGiving
2016/12/26
5
0
oracle笔记整理13——性能调优之SQL优化

1) 3种游标循环性能 a) 单条处理 逐条处理,效率之低,不敢想象。 b) 批量处理 一次FETCH出来.一次处理所有行,效率最高。 c) 游标for循环 效率非常接近于批量处理,这种隐式循环的游标语句,...

thinkpadshi
2016/01/16
0
0
mssql性能优化(教你写出高质量的SQL语句)

我始终认为,一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的。所以我希望按照软...

五味格子
2011/05/11
51
0
Mysql 大数据量高并发的数据库优化

Mysql 大数据量高并发的数据库优化 一、数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。所以,在...

botkenni
2016/11/15
157
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部