SQL优化总结(更新中)

66

表设计的优化

设置合适的数值类型,tinyint int bigint

设置合适的字符串类型,char定长效率高,varchar可变长度效率低

SQL语句优化

  • 避免使用select *,尽量指明字段

  • 避免索引失效的写法

  • union all代替union,union会多一次过滤重复字段的操作,效率低

  • 避免在where子句中对字段进行表达式操作

  • join优化,能用inner joiner就不要left/right join,如果必须要用,以小表为驱动。因为内连接会对两个表进行优化,优先把小表放在外边,把大表放在里边。而left/right join不会调整顺序。

-- 左连接写法
SELECT A.*, B.*
FROM A  #左边的是小表
LEFT JOIN B ON A.id = B.id;
​
-- 等效的右连接写法
SELECT A.*, B.*
FROM B  #左边的是大表
RIGHT JOIN A ON B.id = A.id;

主从复制,读写分离

如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响可以采用读写分离的架构。

读写分离解决的是,数据库的写入,影响了查询的效率。

分库分表