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分钟。
SqlBulkCopy或者SSIS立功了。批量数据插入不走RDBMS的验证和约束,性能提升相当明显。
聚集索引建在哪个字段上的?
自增Id上,没有写出来
@style.boy: 去掉聚集索引,把其他所有索引都去掉试试。
@dudu: 可能是电脑问题吧,我添加了另一张表就2个字段也慢,今天回去用我自己的电脑试试。
我试了,才用了40s啊,我猜测楼主是不是加了不少索引,所以导致插入速度变慢了。要不你把建表SQL发来大家研究研究啊。
应该是索引的问题,数据越多验证的时间越长就慢了,可能是电脑问题吧,我添加了另一张表就2个字段也慢,今天回去用我自己的电脑试试。
在While循环前面加事务,Begin Tran 结束后面加Commit Tran