2012-07-03 39 views
0

我有這個疑問的是,由於記錄的數量,正在幾個小時,我不知道是否有改善之道:SQL更新查詢聯接:變革,提高執行時間

update tableA target 
inner join 
    (select b.columnZero, b.columnOne, b.columnTwo from tableB b 
     inner join tableA a ON b.columnZero = a.columnZero 
    ) as source 
    on target.columnZero = source.columnZero 
set 
    target.columnOne = source.columnOne, 
    target.columnTwo = source.columnTwo; 

編輯:columnZerotableB的主鍵,但不在tableA。在tableA我從上面提到的列中獲得了不同的主鍵。

有什麼建議嗎?

+0

這將是很高興看到該計劃 - 或至少顯示哪些領域索引。 – raina77ow

回答

1

在我看來,你正在做兩次相同的連接(否則我不明白你的查詢)。那麼怎麼樣:

update tableA a 
inner join tableB b on a.columnZero = b.columnZero 
set 
    a.columnOne = b.columnOne, 
    a.columnTwo = b.columnTwo; 
+0

就是這樣,謝謝! (我加入了兩次,因爲在不同的情況下我不得不在內部選擇中對結果進行分組,但這裏不適用) –