|
|
1
23
我发现最好的处理方法是使用浮点顺序字段。在其他两个项目之间移动某个项目时,请将该字段设置为其相邻项之间的中间位置。 这在读写方面都很便宜。唯一的缺点是浮动时间越来越长:) |
|
2
16
您建议的“天真”方法也是最佳实践! |
|
|
3
13
考虑到Tony Andrews的回答,您也可以为每个条目存储一个“next”索引。然后,当你把它们全部拉进去时,沿着链条在阵列中行走。这使得移动项目更容易,因为您最多只需触摸两行。 这种方法的缺点是,如果您需要一个子集(例如前3个项),您仍然需要拉入所有项,或者使用SQL循环。因此,它介于更新期间影响所有行和读取期间访问所有项之间。和以往一样,测量速度,看看哪个更适合你的情况。 |
|
|
4
5
特别是看看托尼·安德鲁和马克的答案,我似乎真的只有两个选择:
元: |
|
|
5
4
在我的应用程序中,读操作将比写操作频繁得多。使用数值指示排序顺序,并处理重新排序项目的成本。这可以通过以下事实来弥补:您可以按照正确的顺序高效地检索项目以用于显示目的(在典型的应用程序中,这种情况发生的频率比重新调用更高)。
记住咒语K.I.S.S。 |
|
|
6
2
如果您想让它们以相同的顺序重新显示,并且希望它们能够在任何时候重新排序,我认为您都无法避免在数据库中存储一些指示显示优先级的值。我使用了你描述的方法,在FAQ中对项目进行排序,研究人员与补助金相关,菜单中的项目顺序。。。 |
|
|
7
1
是的,在关系数据库中没有顺序,这是基本概念之一。所以没有数值之类的东西是不可能的。 |
|
|
8
0
您可以使用上一个Id,每次新插入都可以将上次插入的行Id设置为上一个Id,如下所示,
任何时候重新排序时,都可以使用最后一行id轻松插入, 如果每次新插入时都使用下一个id,则需要更新上一个id, 如果在任何更新中使用排序顺序,则必须更新多行。 现在postgreSQL递归查询可用于选择 |
|
|
9
0
理论上你可以使用
Order Statistic Tree
如果您希望以某个值获取特定元素,或者只是某种类型的
B-树
一般来说,要存储这些值。如果他们改变了,你也在改变
|
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |