在我的应用程序中,用户可以按照他们选择的任何顺序重新排列他们最喜欢的书籍。
我的数据库中有一个“书籍”表,每本书都有一行。目前,有一个名为“位置”的整数列存储每本书的位置:1 表示最上面的书,2 表示下一本,等等。
问题是,如果有人将一本书从 #11000 位置拖到 #1 位置,那么我必须对数据库进行 11,000 次更新。这似乎效率低下。有一个更好的方法吗?
我的一个想法就是拥有另一个名为“book_sort_orderings”或其他东西的表,每个用户都有一行。其中一列将是一个巨大的文本列,其中存储书籍 ID 的排序列表。然后当用户重新排列书籍时,我可以将这个值提取到我的代码中,在那里执行重新排列,并更新数据库行。当然,任何时候添加或删除一本书,我都必须更新这个数组。这是做事情的“正确”方式吗?或者有什么聪明的方法可以在不改变当前设置的情况下加快速度吗?