插入数据
insert 优化
批量插入
手动提交事务
主键顺序插入
大批量插入数据
如果一次性需要大批量插入数据,使用 insert 语句插入性能较低,此时可以使用 MySQL 数据库提供的 load 指令插入,操作如下:
主键优化
在 InnoDB 存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。
页分裂
页可以为空,也可以填充一半,也可以填充100%,每个页包含了2~N行数据(如果一行数据过大,会行溢出),根据主键排列。
页合并
当删除一行记录时,实际上记录并没有被物理删除,只是记录被标记为删除并且他的空间变得被允许其他记录声明使用。当页中删除的记录达到 MERGE_THRESHOLD(默认为页的50%),InnoDB 会开始寻找最靠近的页(前或后)看看是否可以将两个页合并以优化空间使用。
主键设计原则
满足业务需求的情况下,尽量降低主键的长度。
插入数据时,尽量选择顺序插入,选择使用 AUTO_INCREMENT 自增键。
尽量不要使用 UUID 做主键或者是其他自然主键,如身份证号。
业务操作时,避免对主键的修改。
order by 优化
根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则。
尽量使用覆盖索引。
多字段排序,一个升序,一个降序,此时需要注意联合索引在创建时的规则(ASC/DESC)。
如果不可避免的出现 filesort,大数据量排序时,可以适当增大排序缓冲区大小 sort_buffer_size(默认256k)。
group by优化
在分组操作时,可以通过索引来提高效率。
分组操作时,索引的使用也是满足最左前缀法则的。
limit 优化
count 优化
upate 优化
Ending:
OK,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~