具体一点:1、先找个种子表,记录越多越好。与表中数据内容无关,因为我们只需要它的记录数。这里我用到的种子表是tb_dj_d_portcall,大约有3万条数据。 2、建立要产生1亿条记录的数据表 create table Number (indexNO int not null auto_increment primary key, number INT); 3、向表中插入数据 insert into Number(indexNO,number) select null,(rand()*100+1) as number from smis.tb_dj_d_portcall; 你会发现number表中产生了和种子表中总数量相同的记录,但数据内容为随机生成的。 4、继续插入,用cross join自连接: insert into Number(indexNO,number) select null,(rand()*100+1) as number from number t1 cross join number t2; 这一步可以生成记录数为种子表的乘方,重复执行可以插入大量随机数据,不过有一点要注意:确保你的服务器可以承受这么大的数据量,还有日志表,可能会被填满,要注意增加日志空间。我选的种子表有3万条数据,第四步仅执行了一次,就产生了30000×30000=900000000条数据,呵呵!生成大量测试数据,这是最简单的情况,仅仅对单表生成没有任何关联的数据。复杂一点的还有象父子表,表中数据存在逻辑关系等,会稍微麻烦一点,就不多说了。
还有我觉得是不是由于机器的性能不行啊。
给我的感觉普通PC的性能不行,插入时硬盘灯一直闪个不停,所以,如果要真的是进行大量的数据操作还要使用服务器才行。
但是生成用于插入到数据库的数据的SQL语句文件的速度可是快的很,10万/2秒,要是往数据库里面插入数据能达到这个速度我就满意了,呵呵。
2、建立要产生1亿条记录的数据表
create table Number
(indexNO int not null auto_increment primary key,
number INT);
3、向表中插入数据
insert into Number(indexNO,number)
select null,(rand()*100+1) as number
from smis.tb_dj_d_portcall;
你会发现number表中产生了和种子表中总数量相同的记录,但数据内容为随机生成的。
4、继续插入,用cross join自连接:
insert into Number(indexNO,number)
select null,(rand()*100+1) as number
from number t1
cross join number t2;
这一步可以生成记录数为种子表的乘方,重复执行可以插入大量随机数据,不过有一点要注意:确保你的服务器可以承受这么大的数据量,还有日志表,可能会被填满,要注意增加日志空间。我选的种子表有3万条数据,第四步仅执行了一次,就产生了30000×30000=900000000条数据,呵呵!生成大量测试数据,这是最简单的情况,仅仅对单表生成没有任何关联的数据。复杂一点的还有象父子表,表中数据存在逻辑关系等,会稍微麻烦一点,就不多说了。