最近做了一些浅层次到SQL优化的工作,这里总结一下这方面的东西:
- 使用索引,但不要太多;
- 尽量避免在列上进行运算,这样会导致索引失效;
- 尽量少使用left join,多left join要拆分成多个简短的sql,另外,也要用小结果集驱动大结果集;
- 注意like模糊查询的使用,避免使用%%;
- 仅列出需要查询的字段,这对速度不会有明显影响,主要考虑吞吐量和内存;
- 使用批量更新语句,以节省交互;
- limit基数比较大是可以考虑使用between;
- 不要使用rand函数获取多条随机记录;
- 不要使用null;
- 不要使用count(字段),要使用count(*);
- 不要做无谓的排序操作,尽可能在索引中完成排序;
- 数据量过大,再多的优化也不会起明显作用,考虑引擎优化,分表等其他方法吧。