我有一個表有26列與幾千條記錄。 有沒有辦法批量更新此表?批量更新巨大的表
現在我只需要對每列需要更新的標準更新。 例如
update mytbl
set col1 = replace(....)
update mytbl
set col1 = col1 + "xyz"
update mytbl
set col2 = "test..."
我知道,每個記錄的上述聲明將首先前往下一列(S)之前更新所有記錄的列。
我正在尋找「快速批量更新」,因爲這需要太長時間。
感謝
我有一個表有26列與幾千條記錄。 有沒有辦法批量更新此表?批量更新巨大的表
現在我只需要對每列需要更新的標準更新。 例如
update mytbl
set col1 = replace(....)
update mytbl
set col1 = col1 + "xyz"
update mytbl
set col2 = "test..."
我知道,每個記錄的上述聲明將首先前往下一列(S)之前更新所有記錄的列。
我正在尋找「快速批量更新」,因爲這需要太長時間。
感謝
您可以使用此結構:
UPDATE myTable
SET col1 = REPLACE(col1.....),
col2 = 'some value'
1 - 一對夫婦一千記錄×26場並不大:)
2 - 無論是使用多字段更新語法ck建議,或將其插入可能更快的新表格中:
SELECT (REPLACE(col1...)) as Col1,
'Some Value' as Col2,
...
INTO MyNewTable
FROM MyOldTable
至少有600 000條記錄。 我在一列上做了多個更新,直到數據的格式爲必需。 E.G. urlcol可能有價值http://www.test.com/tess/1234/zap。PHP 我然後做一個更新刪除HTTP://部分 然後 另一個更新刪除任何東西后.COM 結果urlcol然後www.test.com 一些列我只能從其他信息更新列 – Ernesto 2011-05-24 11:07:43
正如您所提到的,該操作將在1個表上執行。這意味着查詢不會有任何連接。那麼別擔心。 JNK - 「INTO MyNewTable」我認爲,我們可以直接在目標表上執行update語句而不會引入第二個表? – Pankaj 2011-05-24 11:21:08
我參加了約120萬次賽事的測試,耗時19分鐘。 – Ernesto 2011-05-24 11:26:50
這些advic由CK
如果有可能鎖定在更新過程中進行獨佔訪問表的建議 1.使用萬事更新:ES是記錄更大數量更爲有用,但無論如何可能的幫助。
禁用所有索引。更新完成後還原它們。
請注意以下幾點。
您可以使用SQL事件探查器來檢查在更新過程中是否有任何觸發器正在執行某些操作。
您可以禁用索引。現在運行你的測試並最終恢復它。
每列的標準是否有所不同?例如,只有當x是tue時更新第1列,y時是第2列還是所有列的標準相同? – BugFinder 2011-05-24 10:56:22
不同的標準是。 – Ernesto 2011-05-24 11:16:24