一:索引优化:
(1)针对数据量大,且查询比较频繁的表建立索引连接
(2)针对常作为查询条件、排序、分组操作的字段建立索引
(3)尽量选择区分度高的列作为索引,建立唯一索引
(4)如果是字符串字段,长度比较,建立前缀索引
(5)尽量使用联合索引,可以去覆盖索引,既节省存储空间,又提高查询效率
(6)要考虑索引数量,索引越多,维护索引代价越大,且增删改的效率更低
(7)索引不为null,提前约束
二:SQL语句优化
(1)避免使用通配符:%和_:在LIKE查询中尽量避免使用通配符%,因为当%位于前面时会导致索引时效从而查询导致全表扫描,从而使效率降低
(2)避免使用子查询:尽量避免在查询中使用子查询,可以通过使用连接(JOIN)来替代子查询
(3)避免使用SELECT *:在查询中避免使用SELECT * ,查询 * 时如果第一次没有查到对应的字段,则又会根据索引去查找一次,降低了查询效率;可以使用覆盖索引只查找对应的字段,从而提升查询效率
(4)避免在where字句中对字段进行表达式操作
(5)主键优化:主键按照顺序插入,尽量降低主键的长度
(6)count优化:如果count函数的参数不是null,就会累计数值加1,使用时建议使用count(*)
(7)limit优化:分页越往后的查询效率越慢,建议使用覆盖索引加子查询的方式优化
(8)update优化:行锁是根据索引加的锁,当索引失效后会变成表锁
(9)order by 优化:尽量通过索引返回数据,性能高;尽量将返回的结果在缓冲区排序
(10)group by 优化:尽量使用最左前缀法则,避免索引失效
(11)缓存查询结果:对于查询比较频繁的数据可以使用缓存来将数据存储到内存,一是可以提升查询效率,二也可以减少数据库的压力
三:表设计优化
(1)使用合适的表结构、关系和约束可以减少查询的复杂性
(2)尽量使用主从复制和读写分离,使得增删改和查询的效率最大提升
(3)建库建表时多考虑分库分表(垂直与水平)
(4)使用合适的数据类型:选择合适的数据类型可以减少存储空间然而提高查询性能
(5)正确使用事务:对于需要多个操作的事务,正确地使用事务可以提高数据一致性和性能
(6)使用EXPLAIN计划:使用EXPLAIN命令分析查询计划,可以查看查询是如何执行的,根据数据追踪可以去查找执行比较慢的SQL从而对SQL进行优调整和优化