1.通过create index idx_colunmsName on tableName(columns)为某个表的某些字段创建索引,注意主键和唯一键都会自动创建索引;
如为表student的name和class字段创建联合索引:create index idx_name_class on student(name,class);
2.通过explain或describe来分析查询语句的效率和一些配置属性:
如:describe select* from student where uid=1;会输出如下几列:
1.id列,整个查询中select的位置;
2.select_type列,查询类型,一般都是simple;
3.table列,此查询对应的表;
4.type列,连接类型,该列中存储很多值,范围从const到all;
5.possible_keys列,重要,指此查询语句里可以用到的索引;(注意,where条件里如果是两个判断是and,那么如果第一个
6.key列,重要,指出此查询里实际定位记录的列是哪个(主键稍微特殊直接显示的是Primary而非列字段名)
7.rows列,重要,用来查看执行此查询所需要检验的 行数,越小越好;
扫描二维码关注公众号,回复:
37054 查看本文章
8.key_len列,重要,使用的索引的长度,一般越小越好;
9.extra 中出现以下 2 项意味着 MYSQL 根本不能使用索引,效率会受到重大影响。应尽可能对此进行优化。
extra 项 | 说明 |
Using filesort | 表示 MySQL 会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容。可能在内存或者磁盘上进行排序。MySQL 中无法利用索引完成的排序操作称为“文件排序” |
Using temporary | 表示 MySQL 在对查询结果排序时使用临时表。常见于排序 order by 和分组查询 group by。 |