一、效率比较
--方式一(单值插入,效率低)
INSERT INTO TABLENAME (ID,NAME) VALUES(1,'Job');
INSERT INTO TABLENAME (ID,NAME) VALUES(2,'Mary');
--方式二(多值插入,效率较高,超1000行报错)
INSERT INTO TABLENAME (ID,NAME) VALUES(1,'Job'),(2,'Mary');
--方式三(SQL先查后插,效率较高,源表有数据才可)
INSERT INTO TABLENAME (ID,NAME) SELECT ID,NAME FROM TABLENAME WHERE ID IN (1,2);
--方式四(临时表,适用大量数据,写法复杂)
--创建临时内存表
CREATE TEMPORARY TABLE tmp_table (
ID INT,
NAME VARCHAR(255)
) ENGINE = MEMORY;
-- 批量插入数据到内存表
INSERT INTO tmp_table (ID, NAME) VALUES (1, 'Job'), (2, 'Mary'), (3, 'Alice');
-- 将数据从内存表批量插入到目标表
INSERT INTO TABLENAME (ID, NAME)
SELECT ID, NAME FROM tmp_table;
-- 删除临时表
DROP TEMPORARY TABLE tmp_table;
15个字段左右测试条件下
方式一(一句SQL插一条):
1秒插入4条数据
方式二(一句SQL最多插1000条):
1秒插入303条数据