前言
一提到MySQL优化,大多数同学都比较依赖于DBA,但是对于程序员来说,掌握SQL的编写技巧其实很重要。
技巧
- 比较运算符能用“=”就不要用“<>”,因为“=”能够增大列索引的使用概率
- 如果只查询一条数据,那么就使用“limit 1”,告知查询游标找到第一个之后就返回,以免进行全表扫描
- 给列选择合适的类型,比如可以使用TINYINT代替INT,节省磁盘和内存的消耗
- 拆解复杂SQL,减少join的出现
- 若查询字段全部为某联合索引字段,则避免使用“SELECT * ”,*会造成回表
- WHERE、ORDER BY、JOIN的列尽量使用索引字段
- 使用EXPLAIN查看执行计划
- 可以使用ENUM的时候不要用VARCHAR
- 字段尽量设置为NOT NULL,尤其是索引字段
- 长度比较大的字段尽量拆分为副表,如果这个字段不会被经常使用
- 经常发生变动的数据库尽量把查询缓存关闭,否则在每次变动的时候都要删除缓存,查询的时候也要查询和更新缓存,浪费时间
- 索引字段的长度尽量不要太长,毕竟一个索引数据页只有16k,如果一个索引内容过长,那么可能就会造成一个数据页只能存储一个索引字段,浪费空间