insert语句速度慢,是什么原因?

fayifu 2011-11-28 05:02:50
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秒,是什么原因啊,有人碰到过吗?
...全文
678 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyh070207 2011-11-28
  • 打赏
  • 举报
回复
或者raid做得有问题
jyh070207 2011-11-28
  • 打赏
  • 举报
回复
如果跟踪一下服务器的磁盘IO,如果CPU及内存占用均少于60%,没有在3秒内完成,很有可能其中有磁盘已有问题,另外,看一下警报及sql日志,看看没有错误等级>=21及以上的错误....
koumingjie 2011-11-28
  • 打赏
  • 举报
回复
服务器有毛病吧
fayifu 2011-11-28
  • 打赏
  • 举报
回复
服务器上就只有一个SQL数据库,没其它软件运行
中国风 2011-11-28
  • 打赏
  • 举报
回复
估計這與服務器的可用資源有關,看一下內存和CPU的使用率

fayifu 2011-11-28
  • 打赏
  • 举报
回复
一个软件其中一个功能用户反应速度很慢,以前只须10秒,现在换新服务器需要好几分钟,经过调试对比发现是插入语句问题,存储过程中注释掉插入语句速度正常(需要计算插入9000多条记录)。现在单独测试简单插入1W条数据,明显速度变慢。
-晴天 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fayifu 的回复:]
执行上面的语句,台式机和服务器都正常,不到1秒。

引用 4 楼 qianjin036a 的回复:
看看这样要几秒:

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

赋值语句,总是最慢的,大量多次循环赋值,是编程者要尽量避免的.
当然这和楼主的提问无关.
你这个可能与服务器的内存分配有关.
黄_瓜 2011-11-28
  • 打赏
  • 举报
回复
哦。那你重启一下服务器或者sql 服务再看看了

语句本身木有问题。
5410 2011-11-28
  • 打赏
  • 举报
回复
的确很慢
fayifu 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qianjin036a 的回复:]
看看这样要几秒:

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……
[/Quote]

执行上面的语句,台式机和服务器都正常,不到1秒。
pengxuan 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ssp2009 的回复:]
引用 1 楼 fredrickhu 的回复:
没有清空缓存??第一次慢后面的就快了?
写数据没有缓存吧
[/Quote]
怎么用缓存
--小F-- 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fayifu 的回复:]
晕哦,不管执行多少次都慢啊,服务器比我台式机还后购置。服务器是IBM3650X,8G内存。应该和硬件资源没关系吧,是不是需要设置什么的?
[/Quote]
32位还是64位?
fayifu 2011-11-28
  • 打赏
  • 举报
回复
晕哦,不管执行多少次都慢啊,服务器比我台式机还后购置。服务器是IBM3650X,8G内存。应该和硬件资源没关系吧,是不是需要设置什么的?
-狙击手- 2011-11-28
  • 打赏
  • 举报
回复
1、磁盘io
2、索引
看看计划
快溜 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
没有清空缓存??第一次慢后面的就快了?
[/Quote]写数据没有缓存吧
-晴天 2011-11-28
  • 打赏
  • 举报
回复
看看这样要几秒:
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]
黄_瓜 2011-11-28
  • 打赏
  • 举报
回复
再试一次也许不这样了。

可能受你服务器上其它东西影响了吧
-晴天 2011-11-28
  • 打赏
  • 举报
回复
服务器不给力.
--小F-- 2011-11-28
  • 打赏
  • 举报
回复
没有清空缓存??第一次慢后面的就快了?

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧