根據值更新另一個MySQL 表
您希望使用另一個表中的值輕鬆更新一個MySQL 表“tobeupdated” ,“原始”,基於儲存在VARCHAR(32) 欄位中的匹配字串, 'value.'
初始查詢和效能問題
最初,您嘗試使用以下查詢來更新'tobeupdated':
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
雖然成功了,這個查詢被證明很慢並且只處理了所需的一小部分
最佳化查詢
要提高效能,請考慮以下最佳化查詢:
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
了解最佳化查詢
「INNER JOIN」語法允許更有效率的資料檢索透過明確指定兩個表之間的連接條件。此外,對「tobeupdated.value」和「original.value」欄位建立索引可顯著加快處理速度。
簡化查詢
對於更簡單的解決方案,您可以使用'USING' 子句:
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
'USING' 簡化了等連接透過自動匹配兩個表中具有相同名稱的列。在這種情況下,「tobeupdated」和「original」都有一個「value」欄位。
其他注意事項
確保相關列有足夠的索引覆蓋率以優化效能。如果表特別大,請考慮為合併結果建立第三個表,儘管這不一定會提高速度。
以上是如何根據另一個表中的匹配值有效地更新 MySQL 表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!