假设我们有一个MySQL表(id,name)和一个支持拖放的列表视图.用户拖动第90行并将其放在第10行.保持这种新排序的最佳方法是什么?
I do not mean to keep sorting for every use separatelyThe HTML/JavaScript is not the problem我见过一些程序员在表中添加一个权重列,在表中设置较低的数字.在我的示例中,它将是1到100. 问题是在上述示例(90到10)的情况下,需要更新81行.90改为10,每增加10到89.它在MySQL中有效吗?有没有更好的解决方案?
另一种方法可能是将新订单保存为另一个表中的字符串,但在这种情况下,我们会在检索阶段丢失MySQL排序!
我记得当我们在大学里学习树形结构作为索引工具时,我们说哇!即使我们利用一个字节的每一位,1.5 GB的纯文本数据存储在不到500KB!所以现在我仍然寻找更好的答案!
不是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 个对象)。