假设我Product在购物网站的数据库中有一个表,用于保存商店产品的描述,价格等。使客户能够重新订购这些产品的最有效方法是什么?
我创建了一个Order用于对记录进行排序的列(整数),但是由于我使用了原始方法来更改每个记录的顺序,因此使我在性能方面有些头疼。一个例子:
Id Order
5 3
8 1
26 2
32 5
120 4
现在我该怎么做才能将记录的顺序更改ID=26为3?
我所做的是创建一个过程,该过程检查目标顺序(3)中是否有记录,如果没有,则更新行的顺序(ID = 26)。如果有目标顺序的记录,则过程将执行自身发送该行的ID target order + 1作为参数。
这导致在我要更改以腾出空间的每个记录之后更新每个记录:
Id Order
5 4
8 1
26 3
32 6
120 5
那么一个聪明的人会做什么?
我使用SQL Server 2008 R2。
编辑:
我需要一个项目的order列足以在不涉及辅助键的情况下进行排序。仅订单列必须为其记录指定唯一的位置。
除了所有这些之外,我想知道是否可以实现链接列表之类的功能:使用“下一个”列而不是“订单”列来保留下一个项目ID。但是我不知道如何编写查询以正确的顺序检索记录。如果有人也对这种方法有想法,请分享。
手掌心
倚天杖
相关分类