关于数据库性能优化小经验
最近做的公司的项目,主要负责和移动端交互后台,有一个接口返回时间7 秒,一个20 秒;项目结构是springMVC 和hibernate ,hibernate觉得查询多还可以,但是添加删除更新多,又是 夺标关联,映射,就很慢了;这是慢的一个小原因;
现在说一个接口 ,answer 表 ,录音表 ,会有很多录音; 评论表 answer_comment,对录音的评论,关联字段 answer_id ; 一条录音有多条评论,
第一个接口;查录音answer表, 把 所有没被评论的分页查询出来按时间排序, 实现是这样, 把 所有的common的表 answer_id 去拿出来,和answer表比较,
以前的sql : select * from answer a where a.id not in(select b.answer_id from answer b) and a.....
没有的查出来,如果数据量小,可以接受,现在线上 数据,录音多,评论也多,这种时间负责度 为n 的平方,就会特别慢,我用exists 替换了in ,不行,加了索引也不行,
解决办法:answer表加个 字段是否已 被评论 flag ,先把 线上数据用sql更新 update answer a set a.isComment=1 where EXISTS(select 1 from answer_comment b where b.answer_id=a.id);
然后程序Java控制,如果有评论,就把那条录音isComment 更新为1 ,这样查询 就是单表查询,不会有关联了 ,时间 复杂度为1 ;sql :select a from answer a where a.isComment=1;
第二个接口:返回高分录音 同样是answer 表, answer_Comment , 用户对录音的点评 分为四个维度存在 answer_Comment ,高分录音是4 个维度求和 大于3 的算高分;
之前的sql:select * from answer a group by a.id having a.id in (select c. answer_id avg(c.1+c.2+c.3+c.4) >3 from answer_Comment c ) and a.sum(secounds)>100 这里也是求和 和in 执行时间很慢
大约20 秒了,当我接受这个项目的时候,添加索引 或者基本的sql优化也回力无天,这里又是 计算,又是in ;
解决 办法,还是添加字段,但是这个 计算是实时 的,多了一条评论, 积分 就会改变 ,这里应为 才用了存储过程,每天晚上去统计计算情况在answer表加一个字段 , 平均分, 更新后,类似于第一个接口 ;
=====================================================================================================================
其实sql 优化那些查询,网上那些办法,什么查询结果需要的字段啊 ,加索引啊,都是空话,我觉得关键在于表的设计 ,尽量减少多表交互太多, 当然不是单表;
转载于:https://www.cnblogs.com/zgghb/p/4655388.html
关于数据库性能优化小经验相关推荐
- 数据库性能优化经验总结
1.数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...
- 历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象
8月24日阿里云数据库技术峰会上,阿里云高级DBA专家玄惭带来面对超大规模的数据库集群,尤其是在每年像双11这样重大促销活动中,阿里云是如何进行运维和优化的.本文主要介绍了天象和CloudDBA两个产 ...
- mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...
- 数据库性能优化—全局优化思路
一.数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里? 大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...
- 超详细:数据库性能优化(一)
出处: https://www.cnblogs.com/easypass/archive/2010/12/ 08/1900127.html 1.数据库访问优化法则 要正确的优化SQL,我们需要快速定位 ...
- MySQL数据库性能优化及自动化运维实践教程!DBA日常工作
MySQL数据库性能优化及自动化运维实践教程!本文作者将站在更加全面的角度分享他在这一年多 DBA 工作中的经验,希望可以给大家带来启发和帮助. DBA 的日常工作 我觉得 DBA 真的很忙,我们来看 ...
- oracle使用 union all 用自增序列_值得收藏的Oracle数据库性能优化
值得收藏的Oracle数据库性能优化 年尾了,新的一波面试军又要开始了,被问到最多的可能就是性能优化,尤其是数据库性能优化,这个面试题不管是初中高级工程师都会被问到.因此我觉得下面31点ORACLE优 ...
- oracle union all 特别慢_值得收藏的Oracle数据库性能优化
前言 年尾了,新的一波面试军又要开始了,被问到最多的可能就是性能优化,尤其是数据库性能优化,这个面试题不管是初中高级工程师都会被问到.因此我觉得下面31点ORACLE优化还是值得调几个去面试.也方便以 ...
- 熟悉mysql数据库设计和性能优化_Mysql数据库性能优化
Mysql数据库性能优化,可以从下面三点入手: 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式,适度 遵循三大范式就会带来查询时经常需要join,导致查询效率降低 ...
最新文章
- 整数实现求整数和算法
- JAVA中文字符串编码--GBK转UTF-8
- Python内置函数min(iterable, *[, key, default])
- Linux IO磁盘篇整理小记
- Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
- 01.C(Linux命令)
- 获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
- C++primer 7.4节练习
- gma 教程 | 气候气象 | 计算标准化降水指数(SPI)
- 黑马程序员-黑马,人生的一个重要转折
- python脚本 游戏赚金币_一种王者荣耀刷金币方法(python脚本)
- html 数字大小写转换,数字大小写转化
- 遇到电脑显示器花屏是什么问题
- 达人篇:5)公差的正态分布与CPK与制程能力(重要)
- input限制只能输入数字,限制输入数字长度或者大小
- Xshell简单介绍与作用
- Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面
- 抽象类和接口的异同(分点)
- 网络表示学习Network Representation Learning/Embedding
- 神武4 电脑版天魔里职业玩法攻略(原创)
热门文章
- 信息安全复习2关于网络安全
- 律理(四)----关于“用韵的疏密和宽严”
- 程序员的语言“艳遇史”(一)——班长pascal
- UML-2-迭代、进化和敏捷
- [LeetCode] Reverse Linked List II
- IT 需要知道的一些专业名词和解释 (长期更新)
- Android 用户界面---定制组件(Custom Components)
- PHP curl 模拟登录
- magento根据浏览次数为商品做排行
- python项目部署失败的原因_python项目环境部署(一)