美文网首页
MySQL索引的性能分析和使用

MySQL索引的性能分析和使用

作者: 萧修 | 来源:发表于2023-03-29 09:26 被阅读0次

本文梳理MySQL索引
性能分析、索引使用规则(使用以及失效的情况)

SQL性能分析

从以下四个方面分析:
查看SQL频次、
记录SQL超时、
显示SQL耗时,
显示SQL执行过程

查看执行频次

com后面七个_
show global status like 'com_______';

慢查询状态

记录超时的SQL
show variables like 'slow_query_log';

默认关闭:slow_query_log OFF


#打开慢查询日志:
vi /etc/my.cnf 

#可以去文件打开
slow_query_log=1
long_query_time=0.1

#查看日志
tail -f xxx-slow.log

profiles详情

展示SQL耗时

查看是否支持
select @@have_profiling;

查看开启状态
select @@profiling;

设置开启
set porfiling = 1;

展示查询耗时
show profiles;

展示某条指令
show profile for query id;

explain执行计划

查看SQL的执行计划,SQL执行过程中如何连接和连接的顺序

explain select *from xxx;

possible_keys 可能用到的索引
key   实际用到的索引
key_len 索引长度

使用规则

索引能够提升效率,但有些情况会导致索引查询失效,下面梳理一下几种情况

联合索引

最左前缀法则

如果索引用了联合索引,要遵循最左前缀法则,最左前缀法则指的是从索引的最左列开始,并且不跳过
索引的列,如果跳过某列,索引将部分失效

多个字段组成的联合索引,查询时看最左边,没使用最左侧,就不使用索引

范围查询

联合查询出现范围查询(<,>),范围右则的列索引将失效

索引失效情况

索引列运算

在索引列上进行运算操作,索引将失效

查询时不可计算列上数据,否则将失效

字符串引号

不加单引号,不容易识别类型

模糊查询

like头部模糊,可走索引,尾部索引,索引会失效

or连接的条件

用or连接的条件,如果or前的条件的列有索引,后面的列没有索引,那么涉及的索引不会被用到

两则任意没有索引,都不会用到,可通过执行计划查看

数据分布影响

MySQL会评估是否使用索引,如果全表扫描比索引查询效率高,就不会使用索引。

相关文章

网友评论

      本文标题:MySQL索引的性能分析和使用

      本文链接:https://www.haomeiwen.com/subject/odmtddtx.html