mysql5.7优化插入记录的速度

插入记录时候,影响插入速度的主要是索引,唯一性校验,一次插入记录条数等,根据这些情况,可以分别进行优化,我们来看看有哪些优化的措施

myisam表优化方案

1.禁用索引

对于非空表,插入记录时,mysql会根据表的索引对插入的记录创建索引,如果插入大量数据,建立索引会降低插入记录的速度,为了解决这个情况,可以在插入记录之前禁用索引,数据插入完毕后在打开索引,禁用索引语句如下:

 alter table table_name disable keys;
 其中table_name 是表名

打开索引
alter table table_name enable keys;

如果是空表批量导入数据, 则不需要进行这个操作,因为myISAM引擎的表是在导入数据之后才建立索引的。

2.禁用唯一检查

 插入数据时,mysql会对插入的记录进行唯一校验,这种唯一性校验也会降低插入记录的速度,为了降低这种情况对查询速度的影响,可以在插入记录前禁用唯一性检查,等到数据插入完毕后在开启,禁用唯一性检查的语句如下

set  unique_checks=0
开启唯一性检查的语句如下:
set unique_checks=1;

3.使用批量插入

插入多条记录时,可以使用一条insert 语句插入一条记录,也可以使用一条insert语句插入多条记录
insert into table_name values(..''),(...''),('..')

4.使用load data infile 批量插入

当需要批量导入数据时候,如果使用load data infile语句,就尽量使用,因为这个比批量insert还快。

InnoDB表优化方案

1.禁用唯一性检查

插入数据之前执行 set unique_checks=0来禁用唯一索引的检查,数据导入完成后在开启检查,这个和myISAM是一致的

2.禁用外键检查

插入数据之前执行禁止外键的检查,数据插入完成之后在恢复对外键的检查,
  禁用外键检查:
   set foreign_key_checks=0
  启用外键检查
  set foreign_key_checks=1

3.禁止自动提交

插入数据之前禁止事务的自动提交,数据导入完成之后,执行恢复自动提交操作,

 禁止自动提交语句如下
set autocommit=0
恢复自动提交语句
 set autocommit=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大龄奋斗程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值