使用「ON DUPLICATE KEY UPDATE」最佳化INSERT查詢
MySQL資料庫系統提供了「ON DUPLICATE KEY UPDATE」子句來處理場景其中嘗試插入具有重複主鍵的記錄會觸發更新操作。本文探討如何利用此子句實現高效率、簡潔的更新。
具有完整欄位規格的標準 INSERT
當嘗試插入具有重複鍵的記錄時,您可以在「ON DUPLICATE KEY UPDATE」中指定所有字段值子句:
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=2, b=3, c=4, d=5, e=6, f=7, g=8;
雖然此方法可確保正確更新所有字段,但它需要對初始插入中已提供的值進行冗餘規範。
使用來自的欄位值INSERT 語句
為了避免冗餘,您可以利用「ON DUPLICATE」中的「VALUES()」語法KEY UPDATE」子句:
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c), d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g);
此語法引用插入語句中的原始值,無需再次指定它們。
冗餘更新和LAST_INSERT_ID 注意事項
冗餘更新和LAST_INSERT_ID 注意事項
需要注意的是,如果現有欄位值與新欄位值匹配,MySQL將不會執行任何更新。處理,取決於特定的後端您正在使用的應用程式或中間件。
以上是如何使用「ON DUPLICATE KEY UPDATE」優化 MySQL INSERT 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!