我有一个数据库表,维护一些信息,并需要保留订单.基本上如果我列出了元素1到5,并且我想添加一个新元素,那么它可以插入到现有行中的任何位置,可以是最后一个,5之后,1之前的开始或中间的某个位置,例如3之后有没有办法使用
MySQL INSERT语句并指定我们应该在哪一行插入索引?
我认为不是.所以我的策略是创建另一个列’order_number’,它基本上记录了元素的顺序.
例如,如果记录表具有主键(record_id)和并排列出的order_number,它将如下所示:
record_id order_number
1 1
2 2
3 3
4 4
5 5
要在第3行之后向此行添加新元素,生成的结束表将如下所示:
record_id order_number
1 1
2 2
3 3
**6** **4**
4 **5**
5 **6**
在这种情况下,我可以通过简单地选择我想要的数据并提供Order By order_number asc子句来清楚地实现我想要的顺序.
但是,正如您所看到的,要做一个简单的Insert,它需要我更新每个其他行的order_number
它出现在它之后.该表预计至少具有大量的行(大小为100,000),并且在每次单个插入操作时简单地更新每隔一行(因此锁定表)根本不可行.
在这种情况下,什么是更好的推荐策略?