[2025.1.27 MySQL学习] SQL优化

news/2025/1/30 3:40:22/文章来源:https://www.cnblogs.com/luvisdru9/p/18692701

SQL优化

Insert优化

  • 批量插入Insert into emp values(1,'tom'),(2,'mike'),(3,'john');
  • 手动提交事务start transaction;commit;
  • 主键顺序插入,1 2 3 4 5 6 7...
  • 大批量插入数据,Insert性能较低,可以使用load指令,使用指令:
#客户端连接服务器,加上参数--local-infile
mysql --local-infile -u root -p
#设置全局参数local_infile为1,开启从本地加载文件导入数据的开关
set global local_infile = 1;
#执行load指令将准备好的数据加载到表结构中
load data local infile '/root/sql1.log' into table 'emp' fields terminated by ',' lines terminated by '\n';





主键优化

  • 在InnoDB存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table, IOT),默认主键索引为聚集索引

  • 页可以为空,也可以填充一半或100%,每个页包含了2-N行数据,根据主键排列

  • 主键顺序插入:
    image

  • 页分裂,主键乱序插入:
    image

  • 页合并,当删除一行记录时,实际上并未被物理删除,只是被标记(flagged)为删除,并且其空间变得允许被其他记录声明使用
    image
    image

  • 主键设计原则:

    • 满足业务需求下,尽量降低主键长度
    • 插入数据时,尽量选择顺序插入,使用AUTO_INCREMENT自增主键
    • 尽量不要使用UUID作主键或者是其他自然主键,如身份证号(会乱序插入,且长度长)
    • 业务中,尽量避免对主键的修改





order by优化

  • Using filesort:通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫FileSort排序
  • Using index:通过有序索引顺序扫描直接返回有序数据,这种情况即为using index,不需要额外排序,操作效率高
  • 根据排序字段建立合适的索引,多字段排序时,也遵循最前缀法则
  • 尽量使用覆盖索引
  • 多字段排序,一个升序一个降序,此时需要注意联合索引在创建时的规则
  • 如果不可避免出现filesort,大数据量排序时,可以适当增大排序缓冲区大小sort_buffer_size(默认为256K)
  • 一种现象思考:当使用联合索引时,如果联合索引为tb(age,professsion),当根据order by profession排序时,不符合最左前缀法则,会同时出现Using index和Using filesort,原因是age包含在复合索引中,会进行覆盖索引,但是无法直接根据B+tree索引有序性进行排序(age二级索引下无)





group by优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/876407.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek-R1:开源Top推理模型的实现细节、使用与复现

核心观点 ● 直接用强化学习就可以让模型获得显著的推理能力,说明并不一定需要SFT才行。 ● 强化学习并不一定需要复杂的奖励模型,使用简单的规则反而取得意想不到的效果。 ● 通过知识蒸馏让小模型一定程度上也有推理能力,甚至在某些场景下的表现超过了Top模型,比直接在小…

高通平台Android源码bootloader分析之sbl1(一)

高通8k平台的boot过程搞得比较复杂, 我也是前段时间遇到一些问题深入研究了一下才搞明白。不过虽然弄得很复杂,我们需要动的东西其实很少,modem侧基本就sbl1(全称:Secondary boot loader)的代码需要动一下,ap侧就APPSBL代码需要动(对此部分不了解,可参照:bootable 源…

读量子霸权17模拟宇宙(下)

黑洞、暗物质、粒子标准模型及超越理论被探讨,弦理论为领先候选,量子计算机模拟宇宙成为可能,平行宇宙理论也被提出,物理学界寻求宇宙终极理论。1. 黑洞 1.1. 模拟黑洞可以很快耗尽普通数字超级计算机的计算能力 1.2. 并没有人真正知道当一颗大质量恒星在引力作用下坍缩时会…

VSCode 接入DeepSeek V3大模型

转载自: VSCode 接入DeepSeek V3大模型,附使用说明 - 唯知笔记 DeepSeek V3 是一个拥有 6710 亿参数的专家混合(MoE)语言模型。最新评估表明,DeepSeek V3 已经超越了其他开源模型。重点是:国内(不需要工具),便宜(10块钱大约500万tokens)。 作为日常开发使用的编辑器 VSC…

06_LaTeX之特色工具和功能

本文介绍一些特色的 $\LaTeX{}$ 辅助功能。前两个功能 $\texttt{BibTeX}$ 和 $\texttt{makeindex}$ 依靠一些辅助程序自动生成参考文献、索引等;之后的使用颜色、超链接等则令我们生成美观易用的电子文档。06_\(\LaTeX{}\) 之特色工具和功能 目录06_\(\LaTeX{}\) 之特色工具和…

程序员常用高效实用工具推荐,办公效率提升利器!

前言 在当今这个技术日新月异的时代,开发者只有持续学习,才能紧跟时代的浪潮。为了助力开发者在高效学习与工作中实现平衡(告别996的束缚),众多卓越且实用的开发工具应运而生,它们如同强大的助力器,极大地提升了我们的工作效率与创造力。🚀Gitee加速访问: https://gi…

Cisco NX-OS System Software - ACI 16.0(8f)M - 适用于 ACI 模式下的 Nexus 9000 系列交换机系统软件

Cisco NX-OS System Software - ACI 16.0(8f)M - 适用于 ACI 模式下的 Nexus 9000 系列交换机系统软件Cisco NX-OS System Software - ACI 16.0(8f)M 适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机系统软件 请访问原文链接:https://sysin.org/blog/cisco-aci-16/ 查看最新…

[译] WinForms:分析一下(我用 Visual Basic 写的)

原文 | Klaus Loeffelmann 翻译 | 郑子铭 如果您从未看过电影《分析这一点》,下面是简短的介绍:假设一个纽约家族的成员有可疑的习惯,他决定认真考虑接受治疗以改善他的精神状态。在比利克里斯托和罗伯特德尼罗的推动下,剧情一定会很有趣。虽然《分析这一点!》讽刺性地处理…

Cisco APIC 6.0(8f)M - 应用策略基础设施控制器

Cisco APIC 6.0(8f)M - 应用策略基础设施控制器Cisco APIC 6.0(8f)M - 应用策略基础设施控制器 Application Policy Infrastructure Controller (APIC) 请访问原文链接:https://sysin.org/blog/cisco-apic-6/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org思科…

python--成功案例

https://www.python.org/about/success/

特斯拉 Model Y 焕新版 vs Model 3 焕新版 All In One

特斯拉 Model Y 焕新版 vs Model 3 焕新版 All In One 减配 LED 氛围灯 Model Y 焕新版, 车门上的 LED 灯带变短了 💩特斯拉 Model Y 焕新版 vs Model 3 焕新版 All In One 减配 LED 氛围灯 Model Y 焕新版, 车门上的 LED 灯带变短了 💩https://www.tesla.cn/modely/design…

FunPapers[1]: GBDT和DNN强强联手,表格预测新突破!

论文提出了Tree-hybrid MLP(T-MLP)方法,其核心思想是结合GBDT的特征选择和模型集成优势与DNN的高维特征空间和光滑优化特性,通过张量化GBDT特征门、DNN架构剪枝和反向传播协同训练MLP模型,以实现高效、有效的表数据预测。Team up GBDTs and DNNs: Advancing Efficient and…