首页 > 数据库技术 > 详细

【数据库】处理慢SQL

时间:2020-02-25 16:40:45      阅读:91      评论:0      收藏:0      [点我收藏+]

前几天和别人聊到了慢SQL,一个SQL查询很慢,会有什么原因。我在学校做的小Demo里面数据量太小并没有涉及到性能优化问题,但是思考这个问题倒以从上到下把数据库给捋一捋。

一个SQL查询,如果看成是一个程序的执行,无非是想办法省内存,省磁盘空间,省CPU缓存,省调度。从这几个角度去想,就很容易理解了。

 

优化查询的方法:

  1. 使用索引
  2. 优化SQL语句
  3. 优化数据库对象
  4. 硬件优化
  5. MySQL自身优化

使用索引:

  一般大家能想到的就是使用索引了。但是要避免全表扫描,首先考虑在where,order by,group by 涉及的列上建立索引。

优化SQL语句:

  1. 通过explain,可以看到SQL的执行效果,从而选择更好的索引和优化查询语句。比如:explain selext * from student。
  2.  查询的时候不要用 * 号,这样会返回你用不到的字段,最好是用具体的字段替代。
  3. 不在索引列上做运算或者使用函数。
  4. 查询的时候尽量使用 limit 减少返回的行数。

优化数据库对象:

  1. 使用 procedure analyse() 函数对表进行分析,这个函数可以对表中列的数据类型提出优化建议。表的数据类型的第一个原则是,能正确表示和存储数据的最短类型。能小就小。比如:select * from student procedure analyse()。
  2. 分表。如果一个表中有些列常用有些不常用,就垂直拆分,即把主键和一些列放在一个表中,把主键和另外一些列放在另一个表总。如果都常用,这个一个表又太大了,那就按行拆分,大表拆小表,也叫水平拆分
  3. 中间表。如果要经常对一个表进行aggregation,那么我可以把这些结果用一个中间表存起来。

硬件优化:

  这个时候就是能用钱解决的东西就用钱解决,更好的CPU更大的内存性能更强的SSD

MySQL自身优化:

  不要忘了,在安装Mysql的时候,里面还有一个my.cnf配置文件,里面可以对各项参数进行优化调整,比如加大MySql的查询缓存加大数据库连接池

 

【数据库】处理慢SQL

原文:https://www.cnblogs.com/guangluwutu/p/12362247.html

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