1、插入数据
插入数据时,如果插入数据很大,尽量选择批量插入数据。
手动控制事务,尽量不要频繁开启提交事务。
主键尽量顺序插入,性能比主键乱序要好。
大批量插入数据
一次性插入百万记录,使用insert语句插入性能较低,此时可以使用load指令进行插入
2、主键优化
主键长度尽量短,尽量保持顺序插入。推荐使用AUTO_INCREMENT主键自增
主键乱序插入会产生页分裂
的问题。
页分裂
页合并
3、order by 优化
4、group by优化
5、limit优化
limit分页查询,越往后效率越低。
比如:查询(20000,20010)之间的数据,会先查出20010之前的所有数据,然后进行排序,再输出范围之间的数据。排序会浪费大量的时间
优化操作:覆盖索引+子查询
6、count优化
不方便优化,一般要使用count(*),是最快的
7、update优化
where条件尽量选择主键或者其他索引列,否则行锁就会升级为表锁,影响其他线程对数据库的操作。
注意:
InnoDB的行锁是针对索引加的锁,不是根据记录字段加的锁,该索引不能失效,否则会从行锁升级为表锁