MySQL优化总结

1.SQL关键字的执行的顺序

from======》where======》group by======》having======》select======》order by


2.避免全表扫描,将where条件和order by条件后用到的字段建立索引。

开发初期,表少,索引创建与否,可能对性能没啥影响;但是到表记录多的时候,缺少索引,可能对性能的影响会越来越大。

建立索引的注意点

1)大量重复数据不要建索引

当索引列有大量重复数据时,这时索引并没有提高查询效率。

比如:性别sex,男和女各占一半,建索引没起到作用。

2)索引不是越多越好,增改会变慢

一个表的索引最好不要超过6个。索引虽然提高了select的速度,但是insert和update的速度会变慢。

3)避免对索引进行一下操作

避免对索引字段进行计算操作

避免在索引字段上使用in、<>、!=

避免在索引列上使用is null、is not null    

避免在索引列上使用函数

避免在索引列上出现数据类型转换

避免建立索引的列中使用空值

总结:索引分为:主键索引、普通索引、唯一索引、文本索引


3.where

1)避免在where后使用in、<>、!=、null、in、or、函数、表达式操作

2)exists替代in

3)like也会全表扫描


4.explain解释及个字段含义

explain显示MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

1)id:id是一组数字,表示查询的执行顺序

2)select_type:查询类型

SIMPLE简单表:不使用子查询或连接

PRIMARY主查询:外层的查询

UNION:第二个或后面的查询语句

SUBQUERY:子查询中的第一个select

3)table:输出结果的表


总之:possible_keys是可能用到的索引、key_lan和rows的值越小越好

你可能感兴趣的:(MySQL优化总结)