首页 新闻 搜索 专区 学院

sql server数据库循环添加数据有,更快的方式吗?

0
[已解决问题] 解决于 2016-08-24 09:59

declare @i int
declare @BloodId varchar(20)
set @i=1
while(@i<100000)
begin
if(len(@i)=1)
  set @BloodId='0000000'+cast(@i as varchar(1))
else if(len(@i)=2)
  set @BloodId='000000'+cast(@i as varchar(2))
else if(len(@i)=3)
  set @BloodId='00000'+cast(@i as varchar(3))
else if(len(@i)=4)
  set @BloodId='0000'+cast(@i as varchar(4))
else if(len(@i)=5)
  set @BloodId='000'+cast(@i as varchar(5))
else if(len(@i)=6)
  set @BloodId='00'+cast(@i as varchar(6))
else if(len(@i)=7)
     set @BloodId='0'+cast(@i as varchar(7))

set @i=@i+1

insert into BusiBloStorage (Barcode,ProductCode,ExpCode,ABOCode,BloodCode)
values('00101'+@BloodId,'Z4181V00','0153531510','5200',@i)

end

 

有别的快一点的方式么,为了写的简单不相关的字段都去掉了差不多十几个字段吧,执行完花了快40分钟。

sql
坐拥百态的主页 坐拥百态 | 初学一级 | 园豆:184
提问于:2015-06-03 18:07
< >
分享
最佳答案
1

SqlBulkCopy或者SSIS立功了。批量数据插入不走RDBMS的验证和约束,性能提升相当明显。

奖励园豆:5
JeffWong | 老鸟四级 |园豆:2021 | 2015-06-03 18:25
其他回答(3)
1

聚集索引建在哪个字段上的?

dudu | 园豆:38946 (高人七级) | 2015-06-03 18:19

自增Id上,没有写出来

支持(0) 反对(0) 坐拥百态 | 园豆:184 (初学一级) | 2015-06-03 18:23

@style.boy: 去掉聚集索引,把其他所有索引都去掉试试。

支持(0) 反对(0) dudu | 园豆:38946 (高人七级) | 2015-06-03 18:55

@dudu: 可能是电脑问题吧,我添加了另一张表就2个字段也慢,今天回去用我自己的电脑试试。

支持(0) 反对(0) 坐拥百态 | 园豆:184 (初学一级) | 2015-06-04 10:03
1

我试了,才用了40s啊,我猜测楼主是不是加了不少索引,所以导致插入速度变慢了。要不你把建表SQL发来大家研究研究啊。

会长 | 园豆:9047 (大侠五级) | 2015-06-03 22:49

应该是索引的问题,数据越多验证的时间越长就慢了,可能是电脑问题吧,我添加了另一张表就2个字段也慢,今天回去用我自己的电脑试试。

支持(0) 反对(0) 坐拥百态 | 园豆:184 (初学一级) | 2015-06-04 09:52
0

在While循环前面加事务,Begin Tran  结束后面加Commit Tran

嗷大喵学编程 | 园豆:165 (初学一级) | 2015-06-19 16:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册