一,表结构以及索引优化
1,分库分表,读写分离;
2,为字段选择合适的数据类型
3,将字段多的表分解成多个表,增加中间表
4,混用范式与反范式,但避免滥用(比如某一张大表冗余另一张大表的字段,避免连接查询)
5,为查询创建必要索引,但避免滥用
6,尽可能的使用not null
二,sql语句优化
1,寻找最需要优化的语句:分析慢查询日志(参考:https://www.cnblogs.com/saneri/p/6656161.html)
2,利用分析工具:explain,profile(重点关注是否使用索引,扫描了多少行,profile参考:https://www.jianshu.com/p/03b5272368b7)
3,避免使用select * ,只取需要的列
4 ,尽量使用prepared statements(参见:http://www.cnblogs.com/micrari/p/7112781.html)
5,使用索引扫描来排序*(即order by 的字段最好是索引列)
附:数据库设计的规则请参照我的另一篇文章:https://www.imooc.com/article/278468