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