如何在一sql server表中用最快的速度插入100万条记录

时间:2022-01-25 20:42:14
vb+sql server开发
有一表 table1 字段:f01 
如何在table1中用最快的速度插入10000万条记录,且f01为随机数,不能重复

8 个解决方案

#1


选建两个临时表,各写1000个随机数,然后用交叉链接产生100万条记录插入你要的表中,不过这结数就不那么随机了.不过要比产生100万个随机数快多了.

#2


bcp命令非常快,或用批处理做

#3


建两个临时表,各填1000个随机数,用交叉链接辅以其它规则生成100万个不怎么随机的数吧.

#4


TO:zhouqi66() 
我现在用的就是你这种方法,我想看一看没有别的好办法

#5


关注

#6


10000万<>100万
到底多少万?呵呵]

先建立一组标志,如果选中了就设置为1。每次选数时,先判断标志是否为1,如果不为1,则选中,否则忽略选择下一个。下面是例子: 
     Dim n(1 To 370), i, j, q 
     
     For i = 1 To 370 
     n(i) = 0 
     Next 
     j = 0 
     Randomize Timer 
     While j < 10 
     q = Int(Rnd(1) * 369 + 1) 
     If n(q) = 0 Then 
     Print q 
     n(q) = 1 
     j = j + 1 
     End If 
     Wend

#7


用MSHFLEXGRID,ADO绑定

#8


用 insert select 语句批量插入
或定义存储过程在server端操作 可能会快点

#1


选建两个临时表,各写1000个随机数,然后用交叉链接产生100万条记录插入你要的表中,不过这结数就不那么随机了.不过要比产生100万个随机数快多了.

#2


bcp命令非常快,或用批处理做

#3


建两个临时表,各填1000个随机数,用交叉链接辅以其它规则生成100万个不怎么随机的数吧.

#4


TO:zhouqi66() 
我现在用的就是你这种方法,我想看一看没有别的好办法

#5


关注

#6


10000万<>100万
到底多少万?呵呵]

先建立一组标志,如果选中了就设置为1。每次选数时,先判断标志是否为1,如果不为1,则选中,否则忽略选择下一个。下面是例子: 
     Dim n(1 To 370), i, j, q 
     
     For i = 1 To 370 
     n(i) = 0 
     Next 
     j = 0 
     Randomize Timer 
     While j < 10 
     q = Int(Rnd(1) * 369 + 1) 
     If n(q) = 0 Then 
     Print q 
     n(q) = 1 
     j = j + 1 
     End If 
     Wend

#7


用MSHFLEXGRID,ADO绑定

#8


用 insert select 语句批量插入
或定义存储过程在server端操作 可能会快点