SQL优化

  • 插入数据

    • 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,
    • 通过覆盖索引加子查询

  • count优化
    • 在没有where时,myisam会快,有where也慢

    • 优化:自己计数
    • 用法

    • count(*)count(1)count(主键)对比介绍

  • update优化
    • 一定要根据字段进行索引更新,这样是行锁,不然就是表锁,这样得等这个事务提交,锁才会解除,降低并发

  • 总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值