总结: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的安装目录与数据目录不在一张盘上,也会导致速度慢。