MySQL调优-索引
Posted 天枰喜爱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL调优-索引相关的知识,希望对你有一定的参考价值。
Mysql索引分析优化
Explan + SQL(操作)
+----+-------------+----------------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------------+------------+------+---------------+------+---------+------+------+----------+-------+
| 1 | SIMPLE | tb_mail_server | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | NULL |
+----+-------------+----------------+------------+------+---------------+------+---------+------+------+----------+-------+
作用:
1、表的读取顺序
2、数据读取操作的操作类型
3、哪些索引可以使用
4、哪些索引被实际使用
5、表之间的引用
6、每张表有多少行被优化查询
id
select查询的序列号,表示查询中执行select子句或操作表的顺序
三种情况:
type
ALL、index、range、ref、eq_ref、const,system、NULL、
显示查询使用了何种类型,
从最好到最差依次是:system > const > eq_ref > ref > range > index > ALL
keys
rows
Extra
Using filesort 文件内排序
Using temporary 使用临时表
mysql> explain select * from tab_employ group by id%10 order by name;
+----+-------------+------------+------------+------+---------------+------+---------+------+--------+----------+---------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+------------+------------+------+---------------+------+---------+------+--------+----------+---------------------------------+
| 1 | SIMPLE | tab_employ | NULL | ALL | PRIMARY | NULL | NULL | NULL | 467750 | 100.00 | Using temporary; Using filesort |
+----+-------------+------------+------------+------+---------------+------+---------+------+--------+----------+---------------------------------+
1 row in set, 1 warning (0.01 sec)
索引优化
1、单表
若创建的索引字段,存在在查找有范围的情况,则所建索引将失效
EXPLAIN 查看执行计划, 存在Using filesort
2、两表
连接方式:左连建右,右连建左,索引建在相反的表上
3、三表
索引建在常被使用的字段上
索引失效情况:
查看表索引情况
show index from 表名称;
1、索引顺序不能变、不能断(第一个索引必须要被使用)
2、索引列不计算,手动或自动类型转换
3、范围之后都失效,>、<、!=、<>、is null、is not null、or
4、like 查询%放右边(Tping%)
①若不得以使用(%Tping%)情况,使用覆盖索引(select 索引列 from)
5、字符串要加引号
优化口诀:
全值匹配我最爱,最左前缀要遵守
带头大哥不能死,中间兄弟不能断
索引列上少计算,范围之后全失效
LIKE百分写最右,覆盖索引不写星
不等空值还有OR,索引失效要少用
查询优化
以上是关于MySQL调优-索引的主要内容,如果未能解决你的问题,请参考以下文章