更新“订单”列的最佳方法是什么?
假设我有一个0到9的id列,并且从0到9的顺序列。
目前,它在数据库中: 0 0,1 1,2 2等
我的HTML页面发布它想要的新订单:0 8,1 3,2 6等(这完全是随机的,由用户决定)。
进行更新的最佳方式是什么?
我可以遍历并运行每个更新。 我还可以创建一个包含所有对的临时表,然后根据子查询进行更新。
但是我觉得我忘记了一些可以更快地做到这一点的微不足道的事情。有什么建议吗?
答案 0 :(得分:3)
你必须自己更新每一行,没有办法在sql中进行“map”更新。
(有一些技巧,但无论如何它们都没有真正适用/帮助。)
答案 1 :(得分:0)
如果用户确实在随机重新排序这些项目,那么您无能为力。但通常用户可能会对现有订单进行少量修改,例如在列表中向上移动一个项目。在这种情况下,您可以通过放宽排序顺序列必须包含顺序整数的约束来提高速度。我在here之前讨论了一个可能的想法,如果你对如何实现它的细节感兴趣,你可以阅读这个建议。
但是对于10号的名单,可能不值得付出额外的努力。做你正在做的事情 - 它在实践中可能会很好。