SQL优化总结(更新中)
表设计的优化
设置合适的数值类型,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;
主从复制,读写分离
如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响可以采用读写分离的架构。
读写分离解决的是,数据库的写入,影响了查询的效率。