当前位置: 首页 > news >正文

MySQL篇-SQL优化实战

SQL优化措施

通过我们日常开发的经验可以整理出以下高效SQL的守则

  1. 表主键使用自增长bigint
  2. 加适当的表索引,需要强关联字段建表时就加好索引,常见的有更新时间,单号等字段
  3. 减少子查询,能用表关联的方式就不用子查询,可能在少数据量的情况下子查询比较快,但是当结果集大时效率就有大影响了,例如3w行数据的影响就很大了(案例:sql优化实战-减少子查询)
  4. 小表驱动大表
  5. 避免隐式转换,注意作为条件的数据类型是字符串还是数值
  6. 避开索引失效的场景
    1. 使用函数计算索引列作为查询条件
    2. 使用Like全模糊查询条件
    3. 复合索引情况下,最左匹配原则

分析SQL运行的依据

上面提到了这么些措施,在日常开发时多留意可以让我们写出一定时间内高效运行的SQL,但是在数据量日益增长的情况下,我们避免不了需要做一些优化,甚至于优化别人的SQL,优化的依据又从哪里来呢?这时就用到explain了。

Explain简述

不是实际执行SQL语句,而是分析执行的语句走了哪些优化措施。关于explain的说明其他文章描述的很清楚,这里就不过多展开,文章最后是我写这篇文章时阅览过的资料,有需要的可以点击进去看看。
在使用时我们主要关注下面两个字段

  • select_type:表明当前表是简单查询其他复杂查询,
  • type:索引类型,其通常的效率高低排序如下

    system>const>eq_ref>ref>range>index>all

  • key:该表实际使用的索引

还有需要注意的是每张关联的表只会用到一个索引,因此索引也不是建的越多就约有用,不然可能会有走错索引的问题。

预告

接下来会再出一篇生产SQL优化实战,本来想写在这篇内容中的,但是感觉篇幅太长了,所以分到了下一篇,这篇就作为实战前的预备知识说明好了。

参考链接

cnblog:mysql explain type详解
cnblog:explain使用指南
简书:explain详解

http://www.lryc.cn/news/392685.html

相关文章:

  • 【MySQL备份】Percona XtraBackup总结篇
  • 【Git 】规范 Git 提交信息的工具 Commitizen
  • ABB PPC902AE1013BHE010751R0101控制器 处理器 模块
  • 大模型AIGC转行记录(一)
  • element-ui Tree之懒加载叶子节点强制设置父级半选效果
  • Java项目:基于SSM框架实现的高校共享单车管理系统分前后台【ssm+B/S架构+源码+数据库+开题报告+任务书+毕业论文】
  • 【Android】自定义换肤框架02之自定义AssetManager和Resource
  • 熵权法、熵值法、熵权TOPSIS三种方法的实用场景及优劣比较
  • 无人机人员搜救
  • 目标检测算法
  • SpringSecurity 三更草堂学习笔记
  • 鸿蒙生态应用开发白皮书V3.0
  • CSS - 深入理解选择器的使用方式
  • 动手学深度学习(Pytorch版)代码实践 -循环神经网络-54~55循环神经网络的从零开始实现和简洁实现
  • Python酷库之旅-第三方库Pandas(006)
  • 智慧矿山:EasyCVR助力矿井视频多业务融合及视频转发服务建设
  • Unix/Linux shell实用小程序1:生字本
  • springboot2.7.6 集成swagger
  • 面试篇-系统设计题总结
  • 如何摆脱反爬虫机制?
  • 68745
  • github仓库的基本使用-创建、上传文件、删除
  • [课程][原创]opencv图像在C#与C++之间交互传递
  • 科研绘图系列:R语言双侧条形图(bar Plot)
  • 计算机未来大方向的选择
  • AndroidKille不能用?更新apktool插件-cnblog
  • 非参数检测2——定义
  • iOS多target时怎么对InfoPlist进行国际化
  • TZDYM001矩阵系统源码 矩阵营销系统多平台多账号一站式管理
  • 你的 Mac 废纸篓都生苍蝇啦