慢查询

造成慢查询的原因

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 

索引失效条件:

  • 有or必全有索引; 要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
  • 复合索引未用左列字段;对于多列索引,前一部分没有使用索引.则后面没法使用索引
  • like以%开头;
  • 需要类型转换;字符串类型没有加双引号会使得索引失效
  • where中索引列有运算;+1,-1
  • where中索引列使用了函数;sum(),avg()等
  • 如果mysql觉得全表扫描更快时(数据少);

 

此外,查看索引的使用情况

show status like ‘Handler_read%’;
大家可以注意:
handler_read_key:这个值越高越好,越高表示使用索引查询到的次数
handler_read_rnd_next:这个值越高,说明查询低效
 

定位慢查询的两种方法

1.使用explain等工具分析sql

2.慢查询日志操作

查看慢日志是否开启ON为开启,OFF为关闭

show variables like 'slow_query%';

开启慢日志查询

set global slow_query_log='ON';

 

https://www.cnblogs.com/liehen2046/p/11052666.html 参考实际案例和截图

posted @ 2020-08-06 17:45  然某  阅读(197)  评论(0)    收藏  举报