使用identity提高insert效率

 总结:http://topic.csdn.net/u/20071024/20/ed09a43f-2f94-4bf6-b9a0-5b8899539d4d.html

楼主:

存在这样一张表:create table t (int a, int b)
我现在要连续插入60036条记录,我写了一个很简单的脚本如下:
declare @i int 
set @i = 500
while @i  <= 65535
begin
insert into t(a, b) values (@i, 1) 
set @i = @i + 1
end
go
这段脚本如果在SQL2000上执行,仅需几十秒左右。如果在SQL2005上执行,却需要6分钟。基本上慢了20倍。
请高手帮忙看看这是是么原因啊?是否有需要优化的地方?

 

select top 65036 a=identity(int,500,1) into #T from syscolumns a,syscolumns b

insert t select a,1 from #T

drop table #T

在机房查了一天终于找到原因了,应该是硬件配置问题。发现执行慢的机器都是用的HP Proliant DL380/580 G5的服务器,而dell poweredge 2850或者联想的服务器以及我们自己用的PC机执行都非常快啊。
在网上查了一个网页说是,HP DL 380服务器可能要配一个配件。
url:http://www.searchdomino.com.cn/topic/5000/1742404.html

后来在HP支持中心查到要在HP服务器上加一个BBWC的磁盘读写缓存,可以提高写盘速度。默认的是只读缓存,导致速度很慢。
hp url:http://h50069.www5.hp.com/e-Delivery3/Forum/WebUI/Messages/ShowTopic.aspx?RID=9c1f466a-1c94-4e7d-a31d-9228e8d7ba86
这个帖子中说的情况和我一样的,也是基本上一分钟只能插入1万条记录。

把这个情况说一下,希望大家以后遇到这个问题,就不用像我这样从软件一直查到硬件了,忙了两天了。

好像还有一个问题就是,如果SQL SERVER的安装目录与数据目录不在一张盘上,也会导致速度慢。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值