将记录插入到具有位置的表中,而不更新所有记录位置字段

seb*_*s23 2 mysql algorithm

我使用的是MySQL,我没有办法做到这一点.

我有一个有位置的表field,我需要跟踪其值为1到10,000.

假设我在5000位置的中间插入一条记录.因此需要将位置5000到10,000更新到新位置; 老5000变成5001,5002变成5003 ......

当添加1个单一位置时,是否有一种很好的方法来实现这一点而不会影响如此多的记录?

从第1位添加是最差的.

Abd*_*aly 5

我重新考虑数据库设计.如果你将被限制在10K记录的数量级,那么它也不会太糟糕,但如果这种情况不受限制地增加,那么你将会想要做其他事情.我不确定你在做什么,但如果你想要一个简单的排序(假设你没有做很多遍历)那么你可以有一个prev_idnext_id列来表示兄弟关系.以下是您的问题的答案:

update some_table 
set some_position = some_position + 1
where some_position > 5000 and some_position < 10000
Run Code Online (Sandbox Code Playgroud)