gpt4 book ai didi

sql - 在数据库中存储可重新订购商品的有效方法

转载 作者:行者123 更新时间:2023-12-02 10:16:40 25 4
gpt4 key购买 nike

所以我有一个用户收藏夹表。它们有几百万行。

目前,它们只有三列:id (PK),userIdsomeFkRefuserId 有一个索引让我可以快速选择用户的最爱。

目前这些是按 id 订购的这实际上只是插入顺序。我们希望为用户提供重新排序其收藏夹的机会,最有可能通过某种拖放交互。

我的第一个(我怀疑是天真的)方法是简单地添加 order列和超过 userId 的复合索引, order 。然而,经过反射(reflection),当用户将其项目在列表上移动一段距离时,项目的开始位置和结束位置之间的所有中间行将需要它们的 order列重新计算,因此索引也重新计算。

这(很可能)很糟糕。

在我花费大量时间试图量化到底有多糟糕之前,我想知道是否有更好的基于表格的表示,并且使用我上面描述的各种操作进行操作的成本更低。

最佳答案

对于拖放交互,更好的选择是优先考虑的。您可以从优先级 1、2、3 等开始,就像排序顺序一样。

但是,用户想要在 1 和 2 之间移动第 5 项。瞧!将其值设置为 1.5。无需更改其他值。索引更新负责剩下的工作。

为此,优先级需要存储为 float 。这可能是一个问题。此外,足够多的变化可能会导致浮点的极限。因此,如果用户尝试获取最后一个元素并将其插入前两个元素之间,他/她可以逃脱大约几十次左右。

您可以通过一个流程来解决此问题,该流程从 1 开始定期为一个用户(或所有用户,如果是批量的)重新分配号码。

关于sql - 在数据库中存储可重新订购商品的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com