2011-10-03 51 views
2

假設我有一個名爲bookLibrary的表格,其中書籍的唯一ID鏈接到許多庫(通過它們的唯一ID)。如果您以發現書籍的圖書館數組的形式收到書籍更新,那麼更新bookLibrary表格的最有效方法是什麼?更新一對多表格的最有效方法

目前,我只是刪除與本書有關的所有行,併爲我接收的數組中的每個庫添加一個新的關係(行)。這看起來有點激烈,但它確實做到了這一點,並確保表格中沒有重複的行。 (1)是仍然有效的行(是仍在圖書館x中的書),(2)什麼是圖書館需要插入行(爲圖書x添加了新庫),以及(3)哪些行保持不變。

這是一個容易解決的小問題,但是這樣的問題讓我經常想知道效率問題,同時我也想確保儘可能避免惱人的錯誤(如重複行)。

+1

我在最近的一個應用程序中遇到了同樣的問題。我的解決方案與您的解決方案相同,刪除所有引用,然後將相關行的所有行添加回表中。 (對我來說也很激烈)或者,雖然通過在插入之前檢查組合是否已經存在很容易避免重複,但高效地找到哪些行仍然有效以去除無效組合很困難 – Rondel

+0

添加獨特索引,然後你可以節省自己對重複的焦慮...... – Randy

回答

1

兩種方法都可以使用。我會選擇'刪除然後重新插入'選項,除非這種方法存在經過驗證的性能瓶頸,因爲從服務器的角度來看它更簡單。另外,不能保證加載行和進行服務器端比較會更好,因爲您需要加載行,執行代碼內計算,然後重新保存n行。

所以要回答你的問題,你需要做一些分析,看看這些方法是如何疊加的。很大程度上取決於行數,行中的列數,所涉及的sql以及可能如何將sql語句發送到服務器。

關於可靠性,可以通過廣泛的測試減少任一方法的錯誤。我認爲'刪除然後重新插入'的方法也更容易測試。

相關問題