最近做的公司的项目,主要负责和移动端交互后台,有一个接口返回时间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. 数据库性能优化经验总结

    1.数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...

  2. 历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象

    8月24日阿里云数据库技术峰会上,阿里云高级DBA专家玄惭带来面对超大规模的数据库集群,尤其是在每年像双11这样重大促销活动中,阿里云是如何进行运维和优化的.本文主要介绍了天象和CloudDBA两个产 ...

  3. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

  4. 数据库性能优化—全局优化思路

    一.数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里? 大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...

  5. 超详细:数据库性能优化(一)

    出处: https://www.cnblogs.com/easypass/archive/2010/12/ 08/1900127.html 1.数据库访问优化法则 要正确的优化SQL,我们需要快速定位 ...

  6. MySQL数据库性能优化及自动化运维实践教程!DBA日常工作

    MySQL数据库性能优化及自动化运维实践教程!本文作者将站在更加全面的角度分享他在这一年多 DBA 工作中的经验,希望可以给大家带来启发和帮助. DBA 的日常工作 我觉得 DBA 真的很忙,我们来看 ...

  7. oracle使用 union all 用自增序列_值得收藏的Oracle数据库性能优化

    值得收藏的Oracle数据库性能优化 年尾了,新的一波面试军又要开始了,被问到最多的可能就是性能优化,尤其是数据库性能优化,这个面试题不管是初中高级工程师都会被问到.因此我觉得下面31点ORACLE优 ...

  8. oracle union all 特别慢_值得收藏的Oracle数据库性能优化

    前言 年尾了,新的一波面试军又要开始了,被问到最多的可能就是性能优化,尤其是数据库性能优化,这个面试题不管是初中高级工程师都会被问到.因此我觉得下面31点ORACLE优化还是值得调几个去面试.也方便以 ...

  9. 熟悉mysql数据库设计和性能优化_Mysql数据库性能优化

    Mysql数据库性能优化,可以从下面三点入手: 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式,适度    遵循三大范式就会带来查询时经常需要join,导致查询效率降低 ...

最新文章

  1. 整数实现求整数和算法
  2. JAVA中文字符串编码--GBK转UTF-8
  3. Python内置函数min(iterable, *[, key, default])
  4. Linux IO磁盘篇整理小记
  5. Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
  6. 01.C(Linux命令)
  7. 获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
  8. C++primer 7.4节练习
  9. gma 教程 | 气候气象 | 计算标准化降水指数(SPI)
  10. 黑马程序员-黑马,人生的一个重要转折
  11. python脚本 游戏赚金币_一种王者荣耀刷金币方法(python脚本)
  12. html 数字大小写转换,数字大小写转化
  13. 遇到电脑显示器花屏是什么问题
  14. 达人篇:5)公差的正态分布与CPK与制程能力(重要)
  15. input限制只能输入数字,限制输入数字长度或者大小
  16. Xshell简单介绍与作用
  17. Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面
  18. 抽象类和接口的异同(分点)
  19. 网络表示学习Network Representation Learning/Embedding
  20. 神武4 电脑版天魔里职业玩法攻略(原创)

热门文章

  1. 信息安全复习2关于网络安全
  2. 律理(四)----关于“用韵的疏密和宽严”
  3. 程序员的语言“艳遇史”(一)——班长pascal
  4. UML-2-迭代、进化和敏捷
  5. [LeetCode] Reverse Linked List II
  6. IT 需要知道的一些专业名词和解释 (长期更新)
  7. Android 用户界面---定制组件(Custom Components)
  8. PHP curl 模拟登录
  9. magento根据浏览次数为商品做排行
  10. python项目部署失败的原因_python项目环境部署(一)