上一篇
场景引入:
你正在开发一个电商后台系统,突然要导入10万条商品数据,如果一条条INSERT
,数据库估计要哭晕在厕所😭,这时候,多值插入(Multi-value INSERT)就是你的救星!
多值插入是MySQL中一种高效的批量插入方式,单条SQL语句插入多行数据,比循环执行单条INSERT
快N倍!
传统单条插入(慢且啰嗦):
INSERT INTO products (name, price) VALUES ('手机', 3999); INSERT INTO products (name, price) VALUES ('耳机', 599); -- 重复99998次...
多值插入(简洁高效✨):
INSERT INTO products (name, price) VALUES ('手机', 3999), ('耳机', 599), ('充电宝', 199); -- 一次搞定所有数据!
每组值用括号包裹,逗号分隔,最后加分号结束:
INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2), (值3, 值4);
如果插入全部字段且顺序一致,可省略字段名:
INSERT INTO products VALUES (NULL, '平板', 2999), -- 假设第一个字段是自增ID (NULL, '键盘', 399);
注意:字段顺序或表结构变动时易出错,建议显式指定字段!
虽然多值插入高效,但单次插入建议不超过1000行,数据量过大时,用程序分批次提交:
# Python伪代码示例 batch_size = 500 for i in range(0, len(data), batch_size): batch = data[i:i+batch_size] execute_multi_insert(batch) # 执行多值插入
批量插入时开启事务,避免部分失败导致数据不一致:
START TRANSACTION; INSERT INTO products (name, price) VALUES ('手机', 3999), ('耳机', 599); -- 假设这里出错 COMMIT; -- 全部成功才提交 -- 或 ROLLBACK; 回滚
方式 | 插入1万条耗时 |
---|---|
单条INSERT循环 | 8秒 |
多值INSERT(1000行/批) | 3秒 |
:多值插入速度提升约40倍!🚀
INSERT INTO products (name, price) VALUES ('手机'); -- 错误!少一个值
INSERT INTO posts (title) VALUES ('O'Reilly'); -- 单引号需转义为\'
max_allowed_packet
参数调整)。INSERT IGNORE INTO users (id, name) VALUES (1, '张三'), (2, '李四');
INSERT INTO inventory (item_id, stock) VALUES (100, 50) ON DUPLICATE KEY UPDATE stock = stock + 50; -- 重复时库存+50
多值插入是MySQL批量操作的性能利器,
✅ 用逗号分隔多组值
✅ 大数据量时分批处理
✅ 搭配事务保证安全
✅ 避免字段数量不匹配
下次导数据时,别再用for循环
一条条插啦!💪
本文由 休梦秋 于2025-08-04发表在【云服务器提供商】,文中图片由(休梦秋)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/537837.html
发表评论