解析顺序
1.from<table>
2.where<where_condition>
3.group by (group_by_list)
4.having (having_condition)
5.select<select_list>
6.order_by <order_by_condition>
mysql优化
1、查询尽量用确定的列,不要用*查找;
2、尽量少嵌套查询,这种查询会消耗大量的CPU资源;
3、避免使用耗费资源的操作
DISTINCT、UNION、UNION ALL、ORDER BY、MINUS、INTERSECT交集
4、对于比较多的OR查询,建议用多个查询用union all联结起来
5、合理使用索引,使用EXPLAIN去分析SQL语句
type
const>eq_ref>ref>range>index>all
index:全索引表扫描,效率低
possible_key
可能用到的索引
key
用到的索引
ref
显示索引哪一列被使用了,如果可能的话是一个常数const
key_len
越短越好
rows
预估为了找到所需的行而要读取的行数
1、范围条件后索引失效 in < > 等范围查询,范围后的索引失效
2、覆盖索引尽量使用
3、不等于要慎用
4、null和not null也会影响到索引,并非完全不能使用索引,索引优化器有时会优化到可以使用索引查询,需要慎用
5、慎用like 以通配符左侧开头索引失效,如%123
6、or改为union高效,or会全索引表扫描
7、exists替换in
网友评论