SQL优化(插入、主键、order by、group by)
1.索引的设计原则
2.插入优化
2.3.主键优化
2.3.1 页分裂
在插入50的时候,50应该在47之后,但是页空间不足,此时innoDB会创建一个空的页,然后把前一页50%之后的数据移动到新创建的页,然后再插入50这条记录,最后调整指针的指向。
插入结束后:
因此我们在插入数据时顺序插入就不会产生页分裂,性能也就比较高
2.3.2 页合并
合并后:
2.3.2 主键设计的原则
3.order by 优化
3.1 using filesort 和 using index
当排序的字段有两个或更多时,如果对应的都存在索引,那么排序时就是 using index或者 backward index scan(倒序)。当一个字段是正序另一个字段是逆序时,如果不存在对应的 正序/逆序 索引,那么不存在索引的字段还是会使用 filesort
3.2 order by 的设计原则
4.group by优化
5.limit优化
6.count优化
7.update优化
使用update更新记录时,如果对应的条件列没有索引,那么InnoDB会锁住整张表;如果对应的列有索引,那么只会锁住对应的记录。所以update的优化就是确保条件列有索引并且索引不能失效,提高并发的效率。