2012-02-27 28 views
1

我做一個UPDATE從我的客戶端應用程序請求數據庫(SQL Server 2008 R2),它需要6秒鐘才能完成。更新操作需要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

+1

什麼是索引定義? – 2012-02-27 16:33:30

+1

你有沒有索引或觸發器? – 2012-02-27 16:33:37

+0

你有沒有看過SSMS包含實際執行計劃選項?這應該讓你知道你的查詢爲什麼這麼慢。 – starskythehutch 2012-02-27 16:35:43

回答

3

聲明列identity不會自動使其索引;宣佈它主鍵做:

[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY 

您可以將約束添加到現有的數據庫是這樣的:

ALTER TABLE MyTable ADD PRIMARY KEY (id) 
+0

我認爲這是問題的可能性很大。我看不到更新索引慢。 – ChaosPandion 2012-02-27 16:39:24

+0

@ChaosPandion我同意,在單行更新上持續花費六秒鐘是全表掃描的一個肯定標誌。 – dasblinkenlight 2012-02-27 16:41:38

1

如果您對subject2定義的索引或dateProcessed列那麼你的更新由於索引被更新可能會變慢。

如果這樣做,如果您不經常查詢這些字段,則可能需要刪除它們。

如果可行的話,還需要將ID字段作爲主鍵,這將爲其提供索引並加快查找速度。