如何在mySQL中的单个查询中插入100,000条记录

时间:2014-04-23 10:28:44

标签: mysql

如何在mySQL数据库的表中插入100000条记录。

我的想法:

BEGIN
 declare i=0,n=100000;
 while (i<n) DO
  i++;
  insert into tableName values (1,2,3);
 END while;
END

为什么我需要:如果这些记录在数据库中,则测试服务器上的负载。

是否有任何简单的一行查询可以解决这个问题?

2 个答案:

答案 0 :(得分:8)

从表中插入回自身:

insert into tableName values (1,2,3);
insert into tableName select * from tableName; -- 2 rows
insert into tableName select t.* from tableName t, tableName t2, tableName t3, tableName t4; -- raised to 4th power every execution
insert into tableName select t.* from tableName t, tableName t2, tableName t3, tableName t4; -- raised to 4th power every execution

现在有104994行

请参阅SQLFiddle

您可以根据需要在一个命令中将表格的副本添加到交叉连接中,以增加数量的增加。

答案 1 :(得分:0)

使用CTE,在我的机器上插入100,000条记录需要0.7秒。就个人而言,我觉得这更容易定制,例如删除最后一行的注释,使其成为一百万条记录。添加或删除对CTE的引用,以获得更多或更少的记录,功能为10。

WITH 
  cteTen AS (
     SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL 
     SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL 
     SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
)
INSERT INTO 
  tableName SELECT 1, 2, 3  -- YOUR TABLE AND VALUES HERE
FROM cteTen AS X1, cteTen AS X2, cteTen AS X3, 
     cteTen AS X4, cteTen AS X5 --, cteTen AS X6