|
1
5
浮动 列,而不是 . 然后,要在其他两条消息之间插入一条消息,请将这两条消息的平均优先级值指定为新消息的优先级。(例如,要在优先级为2和3的消息之间插入cram消息,请为其指定优先级为2.5)。 通过这样做,您不必更新任何其他消息的优先级,并且您可以继续在这些消息之间进行平均/插入等操作,直到您遇到浮点小数精度限制(这需要一段时间,特别是当原始优先级值往往很小时)。 或者,在“排序依据”中的“优先级”后面添加另一列。在最简单的情况下,使用名为“ShowAfter”的位列,默认值为0。插入cram消息时,将其优先级设置为与要查看的消息相同的优先级,但[ShowAfter]值为1。 |
|
|
2
2
只是一个疯狂的想法,还没有测试它的性能,但是链接列表的结构应该是你想要的。最多只需更改3条记录 找出你想把新唱片放在哪里, 新记录,建立上一个记录和下一个记录。 根据新记录重新链接上一条记录和下一条记录。 您可以通过在模式中添加两个字段(下一个和上一个)来实现这一点。 |
|
3
1
如果你不总是想做后进先出(LIFO),你可以做
|
|
|
4
0
有趣的是,也许您可以使用标识列作为主键,但使用跳过几个值的增量? 这样,如果需要在现有边界之间插入/更新消息优先级,您将保留空间。 有道理? |
|
|
5
0
类似于@Jimmy Chandra的想法,但使用单链接列。 因此,您可能有以下列:
我将设置一个约束,以便SortAfterID引用ID。 如果现在要插入介于1和2之间的新记录(ID=6),您可以:
编辑 我注意到@richardtallent answer结尾的一段提到了同样的想法,但由于我把这些都打出来了,我想我会把它保留在这里,因为它提供了一些额外的细节。 |
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |