优化插入速度

1. 优化插入速度

插入记录时,影响插入速度的主要索引、唯一性校验、一次插入记录条数等因素影响插入速度。根据这些情况,那么我们就可以依次进行优化。

所以优化插入速度的方式可以总结为以下几种:

1.1. 对于MYIASM存储引擎

1.1.1. 禁用索引

对于非空的表,插入记录时,MYSQL会根据表的索引对插入的数据建立索引,如果插入大量数据,那么就会降低插入记录的速度,为了解决这种情况,可以在插入记录之前禁用索引,数据插入完成之后再启用索引:

Alter table table_name DISABLE keys;

其中table_name是需要禁用索引的表的名称
重新启用索引的语句如下:

Alter table table_name ENABLE keys;

对于空表的数据插入,则不需要执行这个操作,因为MYIASM存储引擎是在导入数据之后才建立索引的。

1.1.2. 禁用唯一性检查

插入数据时mysql会对数据进行唯一性校验,这种唯一性校验会降低插入记录的速度。索引为了降低其对插入的影响,我们可以在插入数据之前禁用唯一性约束检查,等到记录插入完毕之后再开启:

set UNIQUE_CHECK=0;

开启唯一约束检查
set UNIQUE_CHECK=1;

1.1.3. 使用批量插入

插入多条记录时,可以使用一条insert语句插入一条数据,也可以使用一条insert语句插入多条数据记录,
如:

insert into t values(1001,20,'xxx');
insert into t values(1002,30,'xxx');
insert into t values(1003,40,'xxx');

insert into t values(1001,20,'xxx'),(1002,30,'xxx'),(1003,40,'xxx');

1.1.4. 使用load data file批量导入

当需要批量导入数据时,如果能使用load方式导入,那么久尽量使用load方式导入,load方式要比insert方式块很多

1.2. 对于Inoodb存储引擎

1.2.1. 禁用唯一性检查

set UNIQUE_CHECK=0;

开启唯一约束检查
set UNIQUE_CHECK=1;

1.2.2. 禁用外键检查

set foreign_key_check=0;

开启外键约束检查
set foreign_key_check=1;

1.2.3. 禁用自动提交

set autocommit=0;
set autocommit=1;
posted @ 2026-05-26 14:20  数据库小白(专注)  阅读(7)  评论(0)    收藏  举报