SQL优化——插入数据操作

插入数据——insert语句优化

1.批量插入

在一条语句中插入多条数据,避免重复书写insert语句,但是建议一条语句最多插入2000条以内的数据。

2.手动事务提交

因为MySQL中默认的事务提交方式是自动提交,当我们插入语句一次写了多条的时候,事务会在每一条insert语句执行完之后提交一次,这样频繁的开启事务也会影响SQL执行效率

3.主键顺序插入

主键插入的时候尽量顺序插入,因为主键顺序插入效率是高于乱序插入的

插入数据——load语句

1.大批量插入数据

如果一次性需要插入大批量数据,使用insert语句插入性能会比较低,可以使用数据库提供的load语句来进行插入数据

当数据都遵循一定规则的文件,就比如说上图,数据之间都用了逗号分隔,此时我们就可以通过三个步骤,来执行load语句

  1.  客户端连接服务端时,加上参数--local-infile
  2. 设置全局参数local_infile1,开启从本地加载文件导入数据的开关
  3. 执行load指令将准备好的数据,加载到表格结构中

对于第一点的解释:表示客户端连接服务端的时候,我需要去加载本地文件

对于第二点的解释:使用语句开启开关

在这之前,我们可以执行语句select @@local_infile;来查看本地数据库是否有打开开关

 而后我们再去执行语句去开启开关

对于第三点的解释:比如说有这么一条语句:

        load data local infile '/root/sql1.log' into table 'table_user' files terminated by ',' lines terminated by '\n';

其中'/root/sql1.log'是你要导入数据的文件路径,'table_user'则是数据要插入进哪个表,','表示数据之间分隔的依据是什么,'\n'表示数据行与行之间用什么方式来分隔

可以看到,使用load语句来插入百万级数据,只用了17.96秒,速度还是很快的,据说如果用insert,可能需要十多分钟,像我这台笔记本,也许要用的时间会更长。

并且再提一嘴,需要执行的sql数据文件,里边的数据尽量也要按照主键顺序插入。

本篇文章仅作为学习笔记,供大家复习或者参考,学习源来自于B站黑马程序员下的MySQL数据库教程32. 进阶-SQL优化-插入数据_哔哩哔哩_bilibili


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值