2009-08-20 96 views
0

一個UPDATE我有兩個表:加快與SELECT查詢

  • 表1有插曲和代碼,以情節截然不同。
  • 表2具有Episode和Code,但Episode不是獨特的(表中的其他字段,與任務無關,使每行都是唯一的)。

我想將表1的代碼複製到表2的每集。當前的代碼做,這是如下:

UPDATE Table2 
SET Table2.Code = (SELECT TOP 1 Code FROM Table1 WHERE Episode = Table2.Episode) 

這需要幾個小時。 (我不知道究竟有多少個小時,因爲我在大約20小時的時間裏取消了它們。)他們大桌子,但是肯定有更快的方法?

回答

5

我沒有一個SQL Server的方便,我不完全確定,但我似乎記得有一個像這樣的語法應該可以加快速度。

UPDATE Table2 SET Table2.Code = Table1.Code FROM Table1 
WHERE Table1.Episode = Table2.Episode 
+0

的加入UPDATE子句中可能屬於,但我從來沒有嘗試過自己: http://stackoverflow.com/questions/871905/use-select-inside-a-更新查詢 – David 2009-08-20 00:44:51

+0

我知道我已經嘗試過了,但現在已經太晚了,我很困:-)。我認爲使用隱含連接的語法正確,並且您的鏈接使用顯式連接。 – 2009-08-20 00:48:00

+0

哇。這變成了一個6分鐘的查詢,而不是20小時。 :O型。 ...現在驗證結果集是相同的...... – Margaret 2009-08-20 02:26:35

1

這兩個表上的「代碼」和「插曲」列是否有任何索引?那些肯定會幫助加快事情的速度!

Marc