假设我有一个“产品”表格,用于在购物网站的数据库中记录商店产品的描述、价格等信息。那么,使客户能够重新排序这些产品的最有效方法是什么?
我创建了一个“订单”列(整数),用于对记录进行排序,但这会导致性能方面的一些问题,因为我使用原始方法来更改实际需要更改的记录后面每条记录的顺序。例如:
Id Order
5 3
8 1
26 2
32 5
120 4
我该怎么做才能把ID为26的记录的顺序改为3?
我的方法是创建一个过程,检查目标顺序(3)是否有记录,如果没有,则更新行的顺序(ID=26)。如果目标顺序中有记录,则使用该记录的ID作为参数执行该过程,并将其发送给目标顺序+1。
这会导致更新要更改的记录之后的每个记录以腾出空间:
Id Order
5 4
8 1
26 3
32 6
120 5
那么一个更聪明的人会怎么做呢?
- 我使用SQL Server 2008 R2。
编辑:
我需要按照顺序列出项目的顺序,不涉及第二个关键字。仅使用“Order”列必须为其记录指定唯一位置。
除此之外,我想知道是否可以实现类似于链表的东西:使用“Next”列而不是“Order”列来保留下一个项的ID。但我不知道如何编写检索正确顺序的记录的查询。如果有人对这种方法有任何想法,请分享。