Mysql批量插入,数据顺序随机

一、背景

项目开发拷贝功能,需要对数据库数据进行批量拷贝插入,插入数据顺序不一致

insert into tabA(`unit_id`, `unit_name`) 
values
('public_filter_679625158335676417', '城市'),
('public_filter_679625158335676418', '校区'),
('public_filter_679625158331482120', '产品'),
('public_filter_679625158335676416', '课程类型'),
('public_filter_679625158331482118', '新老生'),
('public_filter_679625158331482119', '时间')

sql插入顺序:

城市,校区,产品,课程类型,新老生,时间

实际插入顺序

新老生,时间,产品,课程类型,城市,校区

二、原因

1、InnoDB引擎区分为顺序插入和随机插入数据,这个主要根据主键是否插入且主键是否有序,或者插入时指定的排序字段

2、我们插入的数据未使用我们自己生成的自增ID,由数据库生成,数据库会自动根据数据表设置的索引排序规则进行排序,因此,我们使用的数据批量插入为随机插入数据

三、解决

1、生成主键自增id,保证我们插入为顺序插入

INSERT into test_tmp(id,val) VALUES (1,'a'),(2,'b'),(3,'c');

2、要求除了自增ID外,其余字段不得添加索引

3、不追求插入顺序,解决查询顺序问题