- 插入数据
- insert into xx values(),()
- 批量插入500-1000条
- 手动提交事务
- 主键顺序插入
- 大批量插入,使用load指令
- 主键优化
- 数据组织方式
- 表数据根据主键顺序存放,这种存储方式的表称为索引组织表
- 设计原则
- 尽量降低主键的长度
- 插入数据尽量选择顺序插入
- 尽量不使用UUID做主键或者其他自然主键,如身份证号码
- 尽量避免对主键的修改
- 页分裂
- 页可以为空,至少包含两行数据,如果一行数据过大,会行溢出,根据主键排列
- 页合并
- 当删除一行记录,实际上没有物理被删除,而是被标记为删除,而且空间允许被别的记录声明使用
- 单删除的记录到merge—threshold(默认为页的50%)会找最靠近的页看看能不能合并
- order by 优化
- 建立合适索引,多字段,也要遵循最左前缀法
- 尽量使用覆盖索引
- 如果避免不了出现filesort,可以适当增大排序缓冲区大小sort_buffer_size(默认256k)
- 创建索引默认按升序asc排
- 都升序或者都降序,可以用这个索引,降序就反向扫描
- 如果一个升序一个降序,就不行,就得using filesort
- 可以再创建一个索引,针对这个优化
- group by优化
- 使用索引提高效率
- 索引也要满足最左前缀法
- limit 优化
- 0代表起始位置,10代表要扫描的条数
- 10,10从第11条开始,扫描10条
- 越往后耗时越长,2000000,10,
- 通过覆盖索引加子查询
- 0代表起始位置,10代表要扫描的条数
- count优化
- 在没有where时,myisam会快,有where也慢
- 优化:自己计数
- 用法
- count(*)count(1)count(主键)对比介绍
- 在没有where时,myisam会快,有where也慢
- update优化
- 一定要根据字段进行索引更新,这样是行锁,不然就是表锁,这样得等这个事务提交,锁才会解除,降低并发
- 一定要根据字段进行索引更新,这样是行锁,不然就是表锁,这样得等这个事务提交,锁才会解除,降低并发
- 总结
SQL优化
最新推荐文章于 2025-08-27 16:54:55 发布