所以我有一个用户收藏夹表。它们有几百万行。
目前,它们只有三列:id
(pk)userId
和someFkRef
. 有一个索引userId
可以让我快速选择用户的收藏夹。
目前这些是按顺序排列的id
,实际上只是插入顺序。我们希望为用户提供重新排序他们的最爱的机会,最有可能通过某种拖放交互。
我的第一个(我怀疑是幼稚的)方法是简单地在 , 上添加一列order
和一个复合索引。然而,经过反思,当用户将他们的项目在列表上移动一段距离时,项目的开始位置和结束位置之间的所有中间行都需要重新计算它们的列,因此也需要重新计算索引。userId
order
order
这(很可能)很糟糕。
在我花了很长时间试图量化到底有多糟糕之前,我想知道是否有更好的基于表的表示,并且使用我上面描述的各种操作来操作更便宜。