自定义排序或订购表而不诉诸整个shebang

时间:2009-07-29 21:46:08

标签: sql sorting replication

十年来,我们一直在我们的桌子上使用相同的自定义排序,我想知道是否有另一个涉及更少更新的解决方案,特别是从今天起我们想要复制/发布日期并且不会'我希望我们的复制可以复制不必要的条目。我查看了嵌套集,但它似乎没有为我们完成工作。

基准表:

id | a_sort
---+-------
1    10
2    20
3    30

插入后:

insert into table (a_sort) values(15)

第二个位置的条目。

id | a_sort
---+-------
1    10
2    20
3    30
4    15

用表格排序表:

select * from table order by a_sort

并使用所有a_sort条目,至少更新id =(2,3,4)
当然会产生所需的输出:

id | a_sort
---+-------
1    10
4    20
2    30
3    40

列名,列数,数据类型,可能的连接,可能的触发器或完成求助的方式与问题无关。我们也找到了一些非常简洁的方法来快速完成这项任务。< / p>

仅;我们如何能够将数据库中的更新减少到最多1或2个

似乎是一个非常普遍的问题。

船长在我看来很明显“使用a_sort float(53),使用固定值ordervaluefirstentry + abs(ordervaluefirstentry-ordervaluenextentry)/ 2”插入。
但是这只会允许大约1040个“介于两者之间”的条目 - 所以从不诉诸似乎有点问题;)

1 个答案:

答案 0 :(得分:0)

你真的没有描述你对这些数据做了什么,所以请原谅我,如果这对你的情况是一个疯狂的想法:

您可以创建一种“链接列表”,而不是一列值,您有一个“下一个最高值”ID的列。这会将更新次数减少到最多2次。

您可以将其双重关联,并且还有一个下一个最低的列,这会将最大更新次数设置为3。

请参阅: http://en.wikipedia.org/wiki/Linked_list