1。我现在需要自动生成一个以0-9数字组成的7位数(从0000000-9999999所有的数,即共1千万个数),然后删除其中所有7个数字都不相同的数字(如0123456,1023456,3456789等),再将剩下的数列举出来.
2.我现在用Access数据库结构如下
   号码
0000000
0000001
.......
9999999
但我用for循环语句进行一条一条增加,速度其慢,大概每秒增加20条记录,我算了一下按这样的速度我需要等待至少6昼夜的时间,有没有更好的方法能够解决这一问题?急!有没有好的思路或解决方法?我很急,原以高分相送,需要再加分!

解决方案 »

  1.   

    用SQLServer进行相同的循环添加速度要快很多。。
      

  2.   

    TO:xiamang(瞎忙) 
    如果用循环的话也是很慢的
    for i:=0 to 9999999 do
    begin
      SQL语句进行增加;
    end;
    大概每秒可增加20多条记录,但共有1千万条记录哪
      

  3.   

    有一个好方法,1.把这个字段作为主键,另外在建立一个字段(field2),可为空或者不可为空都可以,什么类型都可以.
    2.作一个行级触发器,来对主键赋值
    3.循环使用insert into table(field2) select field2 from table
    一直到满足你的条件为止
      

  4.   

    我的算法是这样的;
    for i:=0 to 9999999 do
    begin
      query1.sql.add('insert into 表名(号码) values('+inttostr(i)+')'); 
    end;
      

  5.   

    to guorui_wh(Re)
    能不能写具体一点,多谢
      

  6.   

    关于插入说说我的算法:
    for i:=0 to 99 do
    begin
      query1.sql.add('insert into 表名(号码) values('+inttostr(i)+')'); 
    end;
    先插入100条记录
    然后把100条记录读出来,然后把这把这一百条记录的百位数字改为‘1',然后插入,这样数据库就有1-200的记录了,而同时插入100条记录比依次插肯定要大大节省时间
    依次类推,插1000读一千,插1W读一W,可以做一个递归程序,嗯,具体代码下午给你,现在忙
      

  7.   

    guorui_wh(Re) 的方法也不错,但是ACCESS支持trigger么?
      

  8.   

    To:bluemeteor(挂月)
    你的想法确实不错,不知有没有问题,采用access数据库行吗?
      

  9.   

    楼主,算法完全是通过DELPHI程序实现的,和ACCESS无关
      

  10.   

    to bluemeteor(挂月)
    一百条记录的百位数字改为‘1'的sql语句好像不好写
      

  11.   

    程序动态控制
    for i:=1 to 9 do
    begin
       level:=i*100;
       ....
       SQL.add('insert into biaoming
         (select '+level+'+haoma from biaoming where haoma<100)');
      

  12.   

    如果access不支持,用sqlserver,搞完了,在用dts导入access,就可以吗,办法是想出来的吗,To: bluemeteor(挂月)你的方法的思想和我的思想是完全一样,不过,我的方法是在服务器端实现,而你的是在客户端实现,速度自然也就不一样了
      

  13.   

    服务器端实现就不能用ACCESS,换sqlserver吧
      

  14.   

    就用sqlserver吧,谁能写一下详细的代码,然后我就散分了
      

  15.   

    for i:=1 to 9999999 do 
      adoquery.appendrecord(...);
      

  16.   

    写一个trigger,用于给关键字赋值,这个应该没有问题把在写一个过程,
    declare @i int;
    set @i=1;
    insert into table1(field_other) values(1)
    while(@i<=15 )
    begin
      insert into table1(field_other) select field_other from table1
      set @i=@i+1
    end;
    --field_other 是你自己建立的一个字段,没有用处,可以为空,可以不为空,类型自己定就可以了,我用的是int
      

  17.   

    以上过程是经过调试成功,可以直接用,不过,你自己要写一个trigger,来对你的主键(你要的序列)赋值,算法也是很简单,因为是单机,所以,就用select @dd=max(id) from table1
    然后把@dd变为数值加1后,在转换成varchar,付给新行
    就可以了搞定了............................
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,