使用另一張表中的值高效更新MySQL 表
當需要僅基於一個MySQL 表的資訊來更新另一個表時共享值,常見的方法是使用JOIN。但是,透過此類查詢實現最佳效能需要仔細考慮。
假設您有兩個具有以下結構的表格:
原始:
id | value |
---|---|
1 | hello |
2 | fortune |
3 | my |
4 | old |
5 | friend |
待更新:
uniqueid | id | value |
---|---|---|
1 | NULL | something |
2 | NULL | anything |
3 | NULL | old |
4 | NULL | friend |
5 | NULL | fortune |
你的目標是根據original中的對應值更新tobeupdated中的id列。雖然以下查詢可能看起來很簡單:
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
它可能非常慢,尤其是對於大型表。這是因為 MySQL 必須對兩個表執行全表掃描才能找到符合的行。
效能最佳化
為了提高效能,更有效的方法是使用帶有ON 子句的JOIN:
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
透過使用INNER JOIN,MySQL 僅考慮兩個表中的匹配行。此外,確保兩個表中的值列上都存在索引可以顯著減少搜尋所需的時間。
簡化語法
對於在為簡單起見,可以使用兩個表中的 USING子句:
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
其他注意事項
以上是如何使用 JOIN 有效地使用另一個表中的資料更新 MySQL 表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!