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、不追求插入顺序,解决查询顺序问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值