用户选择对MySQL表行进行排序的最佳方法是什么?

hpa*_*nia 7 php mysql sorting

假设我们有一个MySQL表(id,name)和一个支持拖放的列表视图.用户拖动第90行并将其放在第10行.保持这种新排序的最佳方法是什么?

  • I do not mean to keep sorting for every use separately
  • The HTML/JavaScript is not the problem

我见过一些程序员在表中添加一个权重列,在表中设置较低的数字.在我的示例中,它将是1到100. 问题是在上述示例(90到10)的情况下,需要更新81行.90改为10,每增加10到89.它在MySQL中有效吗?有没有更好的解决方案?
另一种方法可能是将新订单保存为另一个表中的字符串,但在这种情况下,我们会在检索阶段丢失MySQL排序!

我记得当我们在大学里学习树形结构作为索引工具时,我们说哇!即使我们利用一个字节的每一位,1.5 GB的纯文本数据存储在不到500KB!所以现在我仍然寻找更好的答案!

Mic*_*ing 0

不是weight向 MYSQL 表添加列,而是next_object向表添加列。

它的功能有点像链接列表(如果您熟悉的话)。输入的每个对象都将指向下一个对象。

让我们看一下将位置 90 的对象移动到位置 10 的场景。

首先,您需要更新第 89 个对象,使其现在指向第 91 个对象(新的第 90 个对象)

然后,您需要更新第9个对象,并使其指向第90个对象(新的第10个对象)

最后,您需要更新第 90 个对象(新的第 10 个对象),并使其指向第 10 个对象(新的第 11 个对象)

当然,我的意思是,将next_object字段更新为我所说的指向的对象。

不过,您究竟可以在该字段中输入什么值next_object?只是对象的 ID 或类似的东西。

当我开始写这个答案时,我只是想出了这个系统作为替代方案,所以我不确定这是最有效的方法。但是,嘿,更新 3 个对象比更新 100,000 个对象要好(如果您有 100,000 个对象)。