http://yemao.com/info/file/4/0309/67_4.htm
不知道对你有用没?

解决方案 »

  1.   

    呵呵,看了你连接的帖子,提到的方法的确很慢。 : )你需要先搞一个种子表,几百条几千条数据都行。然后用交叉连接,即CROSS JOIN,向表中插入,用insert into...select..很容易生成1亿条记录。
      

  2.   

    mathematician(数学家) ,你那样生成的不是重复的数据吗?虽然这也是一种好的办法,但是就单纯的插入而言难道就没有更好的办法了吗?
    还有我觉得是不是由于机器的性能不行啊。
    给我的感觉普通PC的性能不行,插入时硬盘灯一直闪个不停,所以,如果要真的是进行大量的数据操作还要使用服务器才行。
    但是生成用于插入到数据库的数据的SQL语句文件的速度可是快的很,10万/2秒,要是往数据库里面插入数据能达到这个速度我就满意了,呵呵。
      

  3.   

    具体一点: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条数据,呵呵!生成大量测试数据,这是最简单的情况,仅仅对单表生成没有任何关联的数据。复杂一点的还有象父子表,表中数据存在逻辑关系等,会稍微麻烦一点,就不多说了。
      

  4.   

    我没测完,就中止mysql了。因为我的E盘12G剩余空间一分钟内就变成3G了,如果不中止呵呵!大数据量需要的硬件开销,有money才行呢!  : )