mysql优化技巧

mysql索引优化

explain
 
type  建议range级别
key   null时建议强制使用索引
key_len  越少越好
rows   扫描行数     
extra  using filesort 和 using temporary 不建议出现

其它优化技巧

in值不宜包含超过20个数值
select *尽量指出对应的字段名
只需要一条数据时尽量使用limit 1
排序字段没有用到索引时,尽量少用排序
限制条件中其它字段没有索引,尽量少用or
尽量用union all替换union
not exist 替换 not in
分页优化:用上页的最后的一条id开始作为limi的前提where
时间范围大建议分段查询控制扫描行数
force index 强制使用index

索引技巧

索引失效的情况
避免进行null值的判断
不建议使用 like ”%name”的查询建议添加全文索引但是mysql语句需要用全文索引的查询方式进行查询
避免where中的表达式操作如果age*2=36可以写成age=36/2
避免类型转换
联合索引要遵守最左前缀法则
时间等范围字段查询条件尽量往条件后面排
order by 和group by时可以选择索引优化 但是有时间范围的字段建议使用程序处理

关于join的优化

被驱动表的on字段建立索引
小表驱动大表straight_join强制连接顺序(on后面的表作为驱动表)
left join中对两个表都有限制条件时会隐式转换为inner join

posted @ 2017-11-24 18:13  念雷星  阅读(174)  评论(0编辑  收藏  举报