mysql sql常用优化
1 explain 输出执行计划,检查order by和where后边的字段是否建立索引
2 in() 中的列不应过多,not in 和 in()数据过多 都不再走索引,使用全表扫描,连续数值可以使用between 1 and 3
3 select 后边指定字段,少用select(*)
4 where 子句中避免is null /is not null
5 应尽量避免在 where 子句中使用 or
6 尽量用union all代替union
union和union all的差异主要是前者需要将结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的CPU运算,加大资源消耗及延迟。当然,union all的前提条件是两个结果集没有重复数据。
7 模糊匹配like不要使用%xxx
8 limit 1和分页灵活使用
9 用连接查询代替子查询
10 小表驱动大表
- in 适用于左边大表,右边小表。
- exists 适用于左边小表,右边大表。
快,滋醒这个做梦的人,有糖尿病的往后靠靠哈,不要给他点甜头!