Sql server 2008 更新操作需要6秒钟

Sql server 2008 更新操作需要6秒钟,sql-server-2008,sql-update,Sql Server 2008,Sql Update,我从客户端应用程序向数据库SQL Server 2008 R2发出更新请求,需要6秒钟才能完成 目前该表中有大约500万行 以下是查询: UPDATE MyTable SET subject2 = 'information abx', dateProcessed = '2012-02-27 23:02:44' WHERE id = 3712028; 其中列为: [id] [int] IDENTITY(1,1) NOT NULL, [dateProcessed] [datetime] NUL

我从客户端应用程序向数据库SQL Server 2008 R2发出更新请求,需要6秒钟才能完成

目前该表中有大约500万行

以下是查询:

UPDATE MyTable 
SET subject2 = 'information abx', dateProcessed = '2012-02-27 23:02:44' 
WHERE id = 3712028;
其中列为:

[id] [int] IDENTITY(1,1) NOT NULL,
[dateProcessed] [datetime] NULL,
[subject2] [nvarchar](150) NULL,
有什么方法可以对数据库进行碎片整理吗??:

我不认为6秒是通过索引字段更新1行搜索的正常时间

非常感谢您的帮助!谢谢

更新1:对不起,伙计们!表中没有索引。我认为身份也有点像索引。所以我可能应该将索引添加到id字段中,或者将其设为主键,声明列标识不会自动将其设为索引;将其声明为主键会:

可以将约束添加到现有数据库,如下所示:

ALTER TABLE MyTable ADD PRIMARY KEY (id)
声明列标识不会自动将其编入索引;将其声明为主键会:

可以将约束添加到现有数据库,如下所示:

ALTER TABLE MyTable ADD PRIMARY KEY (id)

如果在subject2或dateProcessed列上定义了索引,则由于索引正在更新,更新可能会很慢

如果您这样做了,如果您不经常查询这些字段,那么删除它们可能是值得的


如果可行,将ID字段作为主键也是值得的,这将为其提供索引并加快查找速度。

如果在subject2或dateProcessed列上定义了索引,则由于索引正在更新,更新可能会变慢

如果您这样做了,如果您不经常查询这些字段,那么删除它们可能是值得的


如果可行,将ID字段作为主键也是值得的,这将为其提供索引并加快查找速度。

您有任何索引或触发器吗?您看过SSMS中的“包含实际执行计划”选项吗?这应该会让你明白为什么你的查询这么慢。当您遇到性能问题时,检查QEP应该是您的第一步。您是否有任何索引或触发器?您是否查看了SSMS中的“包含实际执行计划”选项?这应该会让你明白为什么你的查询这么慢。每当你遇到性能问题时,检查QEP应该是你的第一步。我认为很有可能这就是问题所在。我看不出更新索引有那么慢。@chaospantion我同意,在一行更新上持续花费六秒钟是一个完整表扫描的肯定标志。我认为这是一个很大的可能性。我看不出更新索引有那么慢。@chaospinion我同意,在一行更新上持续花费六秒钟是完整表扫描的必然标志。