目录
sql性能分析
sql执行频率
MysqL慢查询日志(linux)
注释:MysqL重启:systemctl restart MysqLd
profile详情
注释:查看profiling是否开启,可以使用select @@profiling;
查看耗时情况
explain执行计划
explain执行计划各字段含义:
id
select查询的序列号,表示查询中执行select子句或者是操作表的顺序(id相同,执行顺序从上到下;id不同,值越大,越先执行)。
相同时:
不同时:
select_type
表示select的类型,常见的取值有SIMPLE(简单表,即不使用表连接或者子查询). PRIMARY(主查询,即外层的查询). UNION(UNION中的第二个或者后面的查询语句), SUBQUERY(SELECT/WHERE之后包含了子查询)等。
type
表示连接类型,性能由好到差的连接类型为NULL,system,const(主键或唯一索引),eq_ref,ref(非唯一索引),range,index,all。
possible_key
索引使用
最左前缀法则
范围查询
索引失效情况
索引列运算
注意:不要再索引列上进行运算操作,索引将失效。
字符串不加引号
模糊查询
如果仅仅是尾部模糊匹配,索引捕获失效。如果是头部模糊匹配,索引失效。
or连接的条件
用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。
数据分布影响
如果MysqL评估使用索引比全表更慢,则不使用索引。
数据大于整张表一半,一般情况MysqL会走全表扫描,反之走索引。
sql提示
sql提示,是优化数据库的一个重要手段,简单来说,就是在sql语句中加入一些人为的提示来达到优化操作的目的。
use index(推荐使用的索引) ignore index(不推荐使用的索引) force index(强迫使用指定索引)
覆盖索引
尽量使用覆盖索引(查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到),减少select *;
观察最后一列,上面的性能高于下面
前缀索引
语法:
前缀长度:
单列索引与联合索引
单列索引情况
联合索引情况
设计原则
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。