常见的SQL优化方案

news/2024/11/7 23:52:39/

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.ppmy.cn/news/583816.html

相关文章

脑机接口:运动想象简介

脑机接口:运动想象简介 0. 脑机接口1. 运动想象2. 信号处理2.1 信号采集2.2 信号预处理2.3 特征提取2.4 分类识别 3. EEG波段介绍4. 脑电图电极定位5. 总结 0. 脑机接口 脑机接口(Brain-Computer Interface, BCI):它是…

解决前端容器不能充满屏幕

解决前端容器不能充满屏幕 px、rpx、em、rem、vw、vh各种像素单位的区别 css3新单位vw、vh、vmin、vmax的使用详解 学习element-UI写管理系统的页面,发现当菜单栏都收缩起来,结果是这样的 红色框是容器里每个板块的布局,但是容器下面却有空白…

删除字符串的所有空格

删除字符串的所有空格 str.replace(/\s/g,)

如何解决按空格键却整段后移?

如何解决按空格键却整段后移? 在处理整段的文字中,我们有时会发现,全选整段内容,直接按 段落 里的首行缩进,却形成整段后退,或者标题后退。 怎么办? 全选内容,按CtrlH,…

js空格删除

清除所有空格 $(#t-content).html(HTMLDecode(res.data.content.replace(/\s/g,"")));清除某个字段后面 $(#t-content).html(HTMLDecode(res.data.content.replace(/& /g, "&")));

SQL 语句中删除空格

LTRIM()去掉字符串前面的空格 select ltrim(site_name) from site RTRIM()去掉字符串后面的空格 select rtrim(site_name) from site 嵌套使用这两个寒暑可以去掉字符串前后的空格 select ltrim(rtrim(site_name)) from site 如果想去掉字符串中间的字符,则…

键盘删除键长按只能删除一个字符?--关闭Windows筛选键

问题描述: 键盘删除键长按只能删除一个字符,空格键长按只能打出一个空格等问题。 原因: 因为开启了键盘筛选键功能。 筛选键可以使Windows忽略短暂或重复的击键,也可以调整点击键盘的重复率(按下某个键时的重复性&a…

c语言空格键变成删除键怎么变回来,空格键变删除键怎么办-空格键变删除键解决方法 - 河东软件园...

据部分用户反映,在我们进行文本编辑或者编写代码时,当我们按下空格键来打出“空格号”时会删除后面的文字内容,许多用户不知道是什么原因造成的,其实如果用户仔细观看后一定会发现,此时输入的光标并不是正常的模式&…