我从客户端应用程序向数据库(SQL Server 2008 R2)发出UPDATE
请求,需要6秒才能完成。
目前我在该表中有大约5百万行。
以下是查询:
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:我很抱歉!我表中没有索引。我认为IDENTITY也像INDEX一样。所以我可能应该将INDEX添加到id字段或使其成为PRIMARY KEY
答案 0 :(得分:3)
声明列identity
不会自动将其编入索引;声明主键:
[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY
您可以将约束添加到现有数据库,如下所示:
ALTER TABLE MyTable ADD PRIMARY KEY (id)
答案 1 :(得分:1)
如果在subject2或dateProcessed列上定义了索引,则由于索引更新,您的更新可能会很慢。
如果您这样做,如果您不经常查询这些字段,则可能值得删除它们。
如果可行的话,将ID字段作为主键也是值得的,这将为其提供索引并加快查找速度。