如何對多列執行高效率的UPSERT
使用UPSERT 在資料庫表中插入或更新資料(重複更新時插入)可以成為一項共同任務。但是,在更新語句中處理多個欄位時,考慮效能和可維護性非常重要。
在UPSERT 中處理多個欄位
在您的範例中,您的目標是在專案表中插入或更新行,如果該行存在,則增加items_in_stock 值。雖然您在更新部分中使用子查詢的初始方法可能看起來合乎邏輯,但它引入了不必要的複雜性。
首選簡潔的更新語句
更好的方法是避免在更新聲明。相反,利用 MySQL 的能力來引用更新列的舊值和新值。這使您可以編寫簡潔高效的更新語句。
使用MySQL 值引用的範例
考慮以下UPSERT 語句:
INSERT INTO `item` (`item_name`, `items_in_stock`) VALUES( 'A', 27) ON DUPLICATE KEY UPDATE `items_in_stock` = `items_in_stock` + 27;
In在此範例中,透過將新的items_in_in_in加到前一個值來更新items_in_stock 值。 MySQL 會自動引用舊的 items_in_stock 值,因此無需子查詢。
此方法的優點:
總是考慮簡單性
記住,最有效的解決方案往往是最簡單的。如果您發現自己使問題過於複雜化,則很可能您採取了錯誤的方法。擁抱簡單性並為您的資料庫操作尋求高效且可維護的解決方案。
以上是如何在 MySQL 中有效率地對多列進行 UPSERT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!