insert优化
- 批量插入。
- 手动提交事务。
- 主键顺序插入。
大批量插入
大批量插入时使用insert性能较低,可以使用load指令插入。
主键优化
在Innodb存储引擎中,表数据都是根据主键组织顺序存放的,这种存储的方式称为索引组织表(IOT)。
- 主键乱序插入会造成页分裂。
- 当一个页中的数据元素被删除到一定阈值时(默认50%),InnoDB会合并页,即页的合并。
主键设计原则
- 在满足业务需求的情况下,尽量降低主键的长度。
- 插入数据时,尽量选择顺序插入,选择auto_increment自增主键。
- 尽量不要使用自然主键,如身份证号。
- 业务操作时,避免对主键的修改。
order by优化
Group BY优化
- 在分组时可以使用索引提高效率。
- 在分组操作时,索引也是满足最左前缀法则的。
limit优化
一般分页查询时,通过创建覆盖索引能够比较好的提升性能,可以通过覆盖查询加子查询进行优化。
count优化
update优化
InnoDB的行锁是针对索引加的锁,不是针对记录假的锁,并且该索引不能失效,否则会从行锁升级为表锁。
练习
select class,count(),avg(age) from students group by class;
select class,count(),avg(age) from students where not class=‘2班’;
select class,count(),avg(age) from students where class=‘2班’ group by class having count()>2 order by avg(age) limit 1;