我試圖使用CLI腳本更新一個大型的MyISAM表(2500萬條記錄)。表格沒有被其他任何東西鎖定/使用。MySQL update CASE WHEN/THEN/ELSE
我想,而不是每個記錄做單個UPDATE查詢,我不如利用CASE功能。
該id
字段是主要的。我懷疑以下查詢應該花費毫秒。
UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END
瞧,查詢耗費CPU並且不會永久完成。
然後,令我驚訝的是,我發現查詢正在更新所有2500萬行,將NULL放在我沒有指定的行上。
那是什麼目的?每次執行此查詢時,是否可以對特定行執行MASS更新而不更新2500萬行?或者我必須做個別更新,然後提交?
當你不在'case'語句中指定'else'默認爲'null' –