MySQL——————进阶教学二

发布于:2023-01-04 ⋅ 阅读:(317) ⋅ 点赞:(0)

目录

SQL性能分析

SQL执行频率

MySQL慢查询日志(linux)

 profile详情

查看耗时情况

explain执行计划

explain执行计划各字段含义:

索引使用

 最左前缀法则

范围查询

索引失效情况

索引列运算

字符串不加引号

模糊查询

or连接的条件

数据分布影响

SQL提示

覆盖索引

 前缀索引

 单列索引与联合索引

单列索引情况

联合索引情况

设计原则


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  *;

观察最后一列,上面的性能高于下面

 前缀索引

语法:

前缀长度:

 单列索引与联合索引

 单列索引情况

联合索引情况

设计原则

本文含有隐藏内容,请 开通VIP 后查看