日期:2014-05-17  浏览次数:20553 次

insert语句速度慢,是什么原因?
CREATE TABLE [traitStressArc3] (
[RecID] [int] IDENTITY (1, 1) NOT NULL ,
[TraitID] [int] NOT NULL 
) ON [PRIMARY]
GO


declare @i int
set @i = 1
while @i < 10000
begin
  insert traitStressArc3 (TraitID) values (@i) 
  set @i = @i + 1
end

我插入10000条数据在台式机上只用了2秒,而在一台服务器上用时100秒,是什么原因啊,有人碰到过吗?

------解决方案--------------------
没有清空缓存??第一次慢后面的就快了?
------解决方案--------------------
服务器不给力.
------解决方案--------------------
再试一次也许不这样了。

可能受你服务器上其它东西影响了吧
------解决方案--------------------
看看这样要几秒:
SQL code
CREATE TABLE [traitStressArc3] (
[RecID] [int] IDENTITY (1, 1) NOT NULL ,
[TraitID] [int] NOT NULL  
) ON [PRIMARY]
GO
insert into [traitStressArc3]
select a.number+(2048*b.number)+1 
from master..spt_values a,master..spt_values b 
where a.type='p' and b.type='p' and a.number+(2048*b.number)+1<=10000
select * from [traitStressArc3]
go
drop table [traitStressArc3]

------解决方案--------------------
探讨
没有清空缓存??第一次慢后面的就快了?

------解决方案--------------------
1、磁盘io
2、索引
看看计划
------解决方案--------------------
探讨
晕哦,不管执行多少次都慢啊,服务器比我台式机还后购置。服务器是IBM3650X,8G内存。应该和硬件资源没关系吧,是不是需要设置什么的?

------解决方案--------------------
探讨
引用:
没有清空缓存??第一次慢后面的就快了?
写数据没有缓存吧

------解决方案--------------------
的确很慢
------解决方案--------------------
哦。那你重启一下服务器或者sql 服务再看看了

语句本身木有问题。
------解决方案--------------------
探讨
执行上面的语句,台式机和服务器都正常,不到1秒。

引用:
看看这样要几秒:

SQL code
CREATE TABLE [traitStressArc3] (
[RecID] [int] IDENTITY (1, 1) NOT NULL ,
[TraitID] [int] NOT NULL
) ON [PRIMARY]
GO
insert into [traitStressArc3]
……

------解决方案--------------------
估計這與服務器的可用資源有關,看一下內存和CPU的使用率


------解决方案--------------------
服务器有毛病吧
------解决方案--------------------
如果跟踪一下服务器的磁盘IO,如果CPU及内存占用均少于60%,没有在3秒内完成,很有可能其中有磁盘已有问题,另外,看一下警报及sql日志,看看没有错误等级>=21及以上的错误....
------解决方案--------------------
或者raid做得有问题