一、数据类型
1)更小的通常更好 控制字节长度
2)使用合适的数据类型
如tinyint只占8个位,char(1024)与varchar(1024)的对比,char用于类似定长数据存储比varchar节省空间,如:uuid(32), 可 以用char(32).
3)尽量避免NULL建议使用NOT NULL DEFAULT ''
NULL的列会让索引统计和值比较都更复杂。可为NULL的列会占据更多的磁盘空间,在Mysql中也需要更多复杂的处理程序
二、索引
1)选择唯一性索引
唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录,保证物理上面唯一
2)为经常需要排序、分组和联合操作的字段建立索引
经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间
3)常作为查询条件的字段建立索引
如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度,可建立索引提高查询速度
4)数据少的地方不必建立索引,建立索引会耗费一定的内存,如status字段一般值较少,就不建议添加索引
三、其他
1) 能够用BETWEEN的就不要用IN
2) 能够用DISTINCT的就不用GROUP BY
3) 避免数据类型强转
4) 学会采用explain查看执行计划,其他优化可参考MySQL简单性能优化