2011-10-03 53 views
2

假设我有一个名为bookLibrary的表格,其中书籍的唯一ID链接到许多库(通过它们的唯一ID)。如果您以发现书籍的图书馆数组的形式收到书籍更新,那么更新bookLibrary表格的最有效方法是什么?更新一对多表格的最有效方法

目前,我只是删除与本书有关的所有行,并为我接收的数组中的每个库添加一个新的关系(行)。这看起来有点激烈,但它确实做到了这一点,并确保表格中没有重复的行。 (1)是仍然有效的行(是仍在图书馆x中的书),(2)什么是图书馆需要插入行(为图书x添加了新库),以及(3)哪些行保持不变。

这是一个容易解决的小问题,但是这样的问题让我经常想知道效率问题,同时我也想确保尽可能避免恼人的错误(如重复行)。

+1

我在最近的一个应用程序中遇到了同样的问题。我的解决方案与您的解决方案相同,删除所有引用,然后将相关行的所有行添加回表中。 (对我来说也很激烈)或者,虽然通过在插入之前检查组合是否已经存在很容易避免重复,但高效地找到哪些行仍然有效以去除无效组合很困难 – Rondel

+0

添加独特索引,然后你可以节省自己对重复的焦虑...... – Randy

回答

1

两种方法都可以使用。我会选择'删除然后重新插入'选项,除非这种方法存在经过验证的性能瓶颈,因为从服务器的角度来看它更简单。另外,不能保证加载行和进行服务器端比较会更好,因为您需要加载行,执行代码内计算,然后重新保存n行。

所以要回答你的问题,你需要做一些分析,看看这些方法是如何叠加的。很大程度上取决于行数,行中的列数,所涉及的sql以及可能如何将sql语句发送到服务器。

关于可靠性,可以通过广泛的测试减少任一方法的错误。我认为'删除然后重新插入'的方法也更容易测试。

相关问题