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的值越小越好
网友评论