SQL优化在项目中很常见,主要从五个方面考虑:建表的时候、使用索引、sql语句的编写、主从复制,读写分离,还有一个是如果量比较大的话,可以考虑分库分表。
(1)表的设计优化(参考阿里开发手册《嵩山版》):
- 若字段为数值类型,设置合适的数值(tinyint int bigint),要根据实际情况选择
- 如果是字符串类型,结合存储的内容来选择char和varchar或者text类型
(2)SQL语句优化
- SELECT语句务必指明字段名称(避免直接使用select * )
- SQL语句要避免造成索引失效的写法
- 尽量用union all代替union ,因为union会多一次过滤,效率低
- 避免在where子句中对字段进行表达式操作
- Join优化:能用innerjoin 就不用left join right join,如必须使用 一定要以小表为驱动,内连接会对两个表进行优化,优先把小表放到外边,把大表放到里边。left join 或 right join,不会重新调整顺序。
(3)主从复制,读写分离
如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响 可以采用读写分离的架构。读写分离解决的是:数据库的写入,影响了查询的效率。