假设我有一个名为bookLibrary的表,其中书的唯一ID链接到许多库(通过其唯一ID)。如果您以书籍阵列的形式收到书籍的更新,那么更新bookLibrary表的最有效方法是什么。
目前,我只删除与该书相关的所有行,并为我收到的数组中的每个库添加新关系(行)。这看起来有点激烈,但它可以完成工作,并确保表中没有重复的行。
另一种方法是获取一本书的所有行并查看每一行,即(1)该行仍然有效(该书仍在库x中),(2)哪些行需要插入(为书x添加了新的库),以及(3)哪些行保持不变。
这是一个容易解决的问题,但这样的问题让我经常对效率感到疑惑,而且我也想确保尽可能避免烦人的错误(比如重复的行)。
答案 0 :(得分:1)
任何一种方法都可行。我会选择“删除然后重新插入”选项,除非这种方法存在经过验证的性能瓶颈,因为从服务器的角度来看它更简单。此外,无法保证加载行和进行服务器端比较会更好,因为您需要加载行,进行代码内计算,然后重新保存n行。
因此,要回答您的问题,您需要进行一些分析,以了解这些方法是如何叠加的。很多将取决于行数,行中的列数,涉及的sql,以及可能的sql语句如何发送到服务器。
就可靠性而言,可以通过广泛的测试来缓解任何一种方法的错误。我认为'删除然后重新插入'方法也更容易测试。