[英]PHP MySQL: Update a Join table?
我對如何最好地更新連接表有點困惑。
Presentaion
id PK
Asset
id PK
PresentationAsset
presentationid
assetid
因此,在更新 Presentation 及其在 PresentationAsset 中的關聯資產時,我是否首先搜索所有關系,刪除這些關系,然后創建新關系?
處理這種情況的最佳方法是什么?
至少,將它們全部刪除並創建新的當然是最簡單的。 畢竟,這只是兩個查詢。
DELETE FROM PresentationAsset WHERE presentationid = 1
INSERT INTO PresentationAsset VALUES (1, 1), (1, 2), (1, 3)
假設這些確實是該表中僅有的兩列(例如,沒有時間戳或任何內容),我無法想象您需要將其復雜化的任何理由。
畢竟,擦除現有行並插入所有新行的替代方法是保留已經存在的行,但刪除不再應該存在的行,然后插入新行。 從本質上講,您仍然至少得到一個DELETE
和一個INSERT
,因此在大多數現實世界的應用程序中應該沒有太大的性能差異。 第一種方法的性能甚至可能更好,因為它需要更少的每個操作的值檢查。
當然,如果您正在處理足夠大的場景,其中如此微小的性能差異很重要,您可能希望對所有選項進行實際測試並自己測量性能。
當然,如果這些不是表中僅有的兩列,則您需要正確保留要更新的行的其他列的值,因此刪除所有內容並插入新內容不是一種選擇反正。
您有 2 個選擇:
1)刪除所有資產並按照您所說的創建新資產(定義更易於編碼和調試。如果您在 PresentationAsset 中沒有 PK,您可能遇到的唯一問題是多次刪除可能會留下大量數據在 PresentationAsset PK 上。)
2)這樣做(在偽代碼中)
希望它足夠清楚,並希望我正確理解你的問題;)我想我可以接受 1),但 2)可能更好。 您更新需要更新的值並刪除那些已移除的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.