如何在mySQL数据库的表中插入100000条记录。
我的想法:
BEGIN
declare i=0,n=100000;
while (i<n) DO
i++;
insert into tableName values (1,2,3);
END while;
END
为什么我需要:如果这些记录在数据库中,则测试服务器上的负载。
是否有任何简单的一行查询可以解决这个问题?
答案 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