常见的SQL优化方案

news2024/11/6 9:38:56

1. insert优化


1.1 批量插入

我们之前插入数据都是一条一条插入的,会导致频繁操作数据库,从而影响性能。比如遍历某个集合,然后逐个使用insert语句插入数据库表中

INSERT INTO table (name, age) VALUES ('张三', 18);
INSERT INTO table (name, age) VALUES ('李四', 19);
INSERT INTO table (name, age) VALUES ('王五', 20);

解决方案:可以使用批量插入,即一条insert语句插入多条数据(逗号分割的方式)

INSERT INTO table (name, age) VALUES ('张三', 18), ('李四', 19), ('王五', 20);

注意事件:

  • 插入的数据不建议超过1000条;
  • 如果插入大量数据,可以将数据分成多个批次进行插入,每个批次插入一定数量的数据。

1.2 手动提交事务

MySQL默认自动提交事务。

手动提交事务好处:将多个 INSERT 操作放在一个事务中执行,可以提供更好的性能和数据一致性。事务会把多个 INSERT 操作合并为一个原子操作,减少了磁盘 I/O 和日志刷新的开销。

# 执行insert语句之前开启事务
start transaction;

# 插入数据
INSERT INTO table (name, age) VALUES ('张三', 18);
INSERT INTO table (name, age) VALUES ('李四', 19);
INSERT INTO table (name, age) VALUES ('王五', 20);

# insert语句都执行完毕后,统一提交事务
commit;

1.3 大批量插入数据

如果一次性需要插入大批量数据,使用insert语句插入性能就比较较低了,我们可以使用MySQL数据库提供的load指令进行插入。

在这里插入图片描述

使用load指令操作如下:

-- 客户端连接服务端时,加上参数 -–local-infile
mysql –-local-infile -u root -p123456 

-- 设置全局参数local_infile为1,表示开启从本地加载文件到数据库表结构中
set global local_infile = 1;

-- 执行load指令将准备好的数据,加载到表结构中
load data local infile '/root/sql1.cvs' into table tb_user fields terminated by ',' lines terminated by '\n' ;

load指令参数详解:

  • load data local infile:加载本地文件
  • /root/sql1.cvs:表示磁盘文件
  • into table tb_user:导入到指定的数据库表结构中
  • fields terminated by ',':表示每个字段使用逗号分隔
  • lines terminated by '\n' :每一行数据使用\n分隔

注意:使用load指令大批量插入数据的时候,也要按照主键的顺序进行插入,因为主键顺序插入性能高于乱序插入。


2. 主键优化

3. order by优化

4. group by优化

5. limit优化

6. count优化

7. update优化

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6-js基础-3

JavaScript 基础 - 3 知道什么是数组及其应用的场景,掌握数组声明及访问的语法,具备利用数组渲染柱形图表的能力 今日重点: 循环嵌套数组综合案例 今日单词: 循环嵌套 利用循环的知识来对比一个简单的天文知识,我们…

arcpy制作脚本工具相关(制作并添加脚本工具、脚本工具消息提示、arcpy工具自动获取数据)

前言 采用arcpy制作arcgis的脚本工具,记录如下。 一、脚本工具的制作 制作脚本工具分为两步: 1、先编写对应功能的python脚步 2、将对应功能的脚本修改为,能自己手动选择输入输出数据的脚本 3、将修改完的脚本添加到工具箱 1、编写代码 我…

618种草观察丨益生菌「蓝」在一起,酸奶「地域控」?

2023年的“618”,食饮行业中,种草战线格外热闹,品牌花式“开屏”,吸引消费者。 数说故事发布「SMI社媒心智品牌榜」,本期持续关注健康食品,也新增了今夏网红酸奶行业,一起看看这两大赛道中&…

使用power rail连接secondary pg pin的方法

过往文章: secondary pg pin的作用与连接 之前写到过secondary pg pin的种类与几种连接方式,其中使用最多的方法是NDR rule + route_group的方式,这样工作量少,不容易出错,但也有弊端,那就是一…

ctfshow web入门 内网渗透篇

web859 首先ssh连接上之后传个fscan上去,扫描下内网靶机 发现.5和.6的比较可疑。 一个存在web服务,一个存在445端口。 先看下445端口,靶机给我们提供了msf,所以直接用msf打下Samba msfconsole use exploit/linux/samba/is_kno…

数字贸易下转口贸易企业如何高效管理?

什么是转口贸易?是指企业在国内购买进口货物,经过加工、组装、包装等方式改变其性质,再出口到海外市场的贸易活动。这种贸易方式对于促进国际贸易和提高企业竞争力都有着非常重要的作用,但同时也存在着一些风险和难点,…

如何向领导建议数字化转型应着手数据治理?_光点科技

在当今数字化时代,企业的数字化转型已经成为一个迫切的任务。然而,数字化转型不仅仅涉及技术的引入,更需要在数据治理方面进行全面的改进。 一、数据治理是数字化转型的基石。 数据是企业最重要的资产之一,通过对数据的管理和利用…

电气工程师日常工作常遇到的41种接线方法(二)

021 缘耐压测试仪线路 这种绝缘耐压测试仪可测灯具,将待测灯具与A、B两接线柱接好,按下按钮SB1,中间继电器KA1得电并自锁;然后将调压器VT(1∶10,输出0~250V)调至需测的电压值,如需调到1500V则将VT调到电压…

第四章.­ ­ Feasibility of Learning

第四章. Feasibility of Learning 本章主要介绍机器学习的可行性,讨论问题是否可以使用机器学习来解决。 4.1 Learning is Impossible 1.示例描述 1).九宫格样本类型的预测描述: 图中有6个样本,分成两个类别(1和-1&#xff09…

pytorch搭建VGG网络

pytorch搭建VGG网络 CNN 感受野VGG-16搭建VGG网络model.pytrain.pypredict.py VGG 网络的创新点:通过堆叠多个小卷积核来替代大尺度卷积核,可以减少训练参数,同时能保证相同的感受野。 例如,可以通过堆叠两个 33 的卷积核替代 5x5…

SpringSecurity6.0+Redis+JWT基于token认证功能开发(可用于实际生产项目,保证API安全)

基于token认证功能开发 引子:最近做项目时遇到了一个特殊的需求,需要写共享接口把本系统的一些业务数据共享给各地市的自建系统,为了体现公司的专业性以及考虑到程序的扩展性(通过各地市的行政区划代码做限制)&#xf…

Java框架之spring AOP 和 IOC

写在前面 本文一起看下spring aop 和 IOC相关的内容。 1:spring bean核心原理 1.1:spring bean的生命周期 spring bean生命周期,参考下图: 我们来一步步的看下。 1 其中1构造函数就是执行类的构造函数完成对象的创建&#x…

第八十四天学习记录:Linux基础:初识Linux

流行的Linux发行版: 任何人都可以封装Linux,目前市面上有非常多的Linux发行版,常用的知名的如下: VMware WorkStations安装 安装完成后,要通过下图方式查看网络适配器是否正常配置: 配置成功&#xff1a…

软件需求分析文档怎么写?

什么是软件需求规范文档 (SRS)? 软件需求规范 (SRS) 文档列出了未来项目的需求、期望、设计和标准。其中包括规定项目目标的高级业务需求、最终用户要求和需求以及产品在技术方面的功能。简而言之,SRS 提供…

Vue-Element-Admin项目学习笔记(8)配置表单校验规则

前情回顾: vue-element-admin项目学习笔记(1)安装、配置、启动项目 vue-element-admin项目学习笔记(2)main.js 文件分析 vue-element-admin项目学习笔记(3)路由分析一:静态路由 vue-element-adm…

软考:中级软件设计师:校验码,汉明码纠错,信息位L和校验位r的关系

软考:中级软件设计师:校验码,汉明码纠错 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是…

Linux通过crontab定时执行脚本任务

Linux通过crontab定时执行脚本任务 前言1. 创建写入脚本2. 设置执行权限3. 添加定时任务定时任务语法格式每分钟写入一条信息到指定文件 4. 查看日志文件5. 定时执行脚本的作用和用途 前言 在Linux中可以使用crontab来定时执行脚本。crontab是一个用于管理定时任务的工具&…

我这样回答多线程并发,面试官直接惊叹!

目录 前言: 1.单线程执行 2、多线程执行 3.守护线程 4.阻塞线程 前言: 多线程并发是一种处理任务的方式,它可以在同一时间内执行多个任务。多线程并发通常应用于需要同时处理多个任务或同时运行多个程序的情况下。 1.单线程执行 Pyth…

便携式水污染检测设备可以分析多少项污水指标

便携式水污染检测设备可以分析多少项污水指标(以下只是一部分) 水质检测仪可检测范围 1、饮用水检测:生活用水(自来水)、(瓶、桶装)矿泉水、天然矿泉水等; 2、工业用水检测&#xf…

人机融合智能的现状与展望

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在学习摘录和笔记专…