我是靠谱客的博主 魁梧乌龟,最近开发中收集的这篇文章主要介绍sql优化 定位慢查询,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

SQL定位慢查询(mysql)

     首先,数据库查询变慢的原因我们一定要先找到,都有哪些语句导致查询变慢,然后我们才能知道优化那些语句。

什么是慢查询呢?

     mysql 默认10秒内没有响应结果,则为慢查询,默认时间可以修改的。

查询慢查询:


修改慢查询:

set long_query_time=3;  意思 查询时间超过3秒,为被视为慢查询,(但改修改方法会在mysql重启后恢复默认值)

mysql 默认情况下是不会记录慢查询的,需要启动时指定慢查询记录到log里才行修改my.cnf

修改为:

slow_query_log =1(默认为no)
slow_query_log_file=/usr/local/mysql/data/localhost-slow.log (系统默认给的日志文件)

修改后重启mysql 这样只要查询超过3秒的sql 就会被打印到log里,然后我们就可以通过explain  执行计划分析sql效率。

SQL语句优化

  1. 避免全表扫描 where 条件中尽量少用NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE 它们会引起全表扫描。
  2. 在where 子句条件中尽量避免null判断 最好用默认值0来代替null进行查询。
  3. 在where子句条件中尽量避免用or连接条件最好使用union all 连接。
  4. like 查询时避免使用前置%查询会导致索引失效全表扫描。
  5. where子句条件查询时可以使用between  and的尽量不要用in 或者用exists 代替。
  6. where子句查询时不要对字段进行表达式判断如:sum/2=5,会不使用索引进行全表扫描的改成 sum=2*5。
  7. where子句查询时不要对字段进行函数操作如:substring(xm,1,4)=wang 会不使用索引进行全表扫描的改成 like 'xm %'。
  8. 查询时尽量不用select *   不要查询出没有用的字段。
  9. 字段可以使用数字类型,尽量不要用字符类型,还有尽量用varchar/nvarchar代替char/nchar 。
  10. 尽量减少子查询,使用关联查询(left join,right join,inner  join)替代。

以上为个人学习总结!

别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得吊儿郎当,和你一样会抱怨,而只有你相信这些都是真的,最后也只有你一人继续不思进取!

最后

以上就是魁梧乌龟为你收集整理的sql优化 定位慢查询的全部内容,希望文章能够帮你解决sql优化 定位慢查询所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部