在数据库中的一组记录上存储排序顺序的最有效方法是什么?

如何解决在数据库中的一组记录上存储排序顺序的最有效方法是什么??

开发过程中遇到在数据库中的一组记录上存储排序顺序的最有效方法是什么?的问题如何解决?下面主要结合日常开发的经验,给出你关于在数据库中的一组记录上存储排序顺序的最有效方法是什么?的解决方法建议,希望对你解决在数据库中的一组记录上存储排序顺序的最有效方法是什么?有所启发或帮助;

问题描述

使用integer定义顺序的列怎么办?认情况下,您分配的数字* 1000,例如1000、2000、3000 ....,如果在1000和2000之间移动3000,则将其更改为1500。因此,在大多数情况下,您根本不需要更新其他数字。我使用这种方法,并且效果很好。您也可以使用double但是这样就无法控制精度和舍入误差,因此请不要使用它。

:假设您将B移至A之后的位置。首先执行select查看记录在A旁边的顺序。如果它比A的顺序至少高出+2,则只需设置B的顺序即可介于两者之间。但是,如果仅高+1(A后面没有空格),则选择B的边界记录以查看这一边有多少空间,除以2,然后将此值加到A之间所有记录的顺序和B。就是这样!

(请注意,对于包含多个查询的任何算法,都应使用事务/锁定,因此这也适用于这种情况。最简单的方法使用InnoDB事务。)

解决方法

假设使用PHP / MYSQL,但我不一定需要实际的代码,我只是对它背后的理论感兴趣。

一个很好的用例是Facebook的照相馆页面。您可以将照片拖放到页面上,这会引发Ajax事件以保存新的排序顺序。我正在实现非常相似的东西。

例如,我有一个数据库表“ photos”,其中包含大约一百万条记录:

照片 id:int,用户id:int, 相册 ID:int,排序顺序:int,文件名:varchar,标题:varchar

假设我有一张包含100张照片的相册。我将照片拖放到新位置,然后触发Ajax事件以保存在服务器上。

我是否应该将照片ID的整个数组传递回服务器并更新每条记录?假设输入验证通过“ WHERE userid=
loggedin_id”,因此恶意用户只能弄乱自己照片的排序顺序

我是否应该传递照片ID,其先前的排序索引和新的排序索引,检索这两个索引之间的所有记录,对其进行排序,然后更新其顺序?

如果在一个图库中有成千上万张照片并且更改了排序顺序,该怎么办?

编程问答相关问答

我的环境详情: <ul> <li>操作系统:Ubuntu 20.04</li> <li>节点版本:9.6.1</li> <li>Qt 版本:5.9.1</li> </ul> 我
此问题使用 <a href="https://people.ucsc.edu/%7Emclapham/eart125/data/georoc.csv" rel="nofollow noreferrer">https://people.ucsc.edu/~
对不起,我正在绞尽脑汁想办法解决这个问题。 我的 kafka 代理说等待连接到 Zookeper 然后关闭(超时)
我有一个 pypsark 数据框保存为 <code>temp_view</code>,我需要将它保存到 <code>Table2</code> 中的 <code>DB2</code>
我想在 <a href="https://www.brightsign.biz/digital-signage-products/XT-product-line/XT1144" rel="nofollow noreferrer">BrightSign XT114
我对 sql 很陌生,一直在尝试使用以下脚本对其进行参数化。 <strong>这是我的代码:</strong> <pre><
<ol> <li>现在我正在考虑为 android 开发一个应用程序并想要获取位置信息。</li> <li>所以我决定使用 xamarin 的
我正在使用 TestNg 运行并行测试,我想在脚本中的某些点停止/终止线程。这个脚本有很多层,所以简单
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注