比方说,我在购物网站的数据库中有一个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。
编辑:
我需要的项目的顺序列与不涉及辅助键分拣就足够了。单独订单栏必须为其记录指定一个独特的地方。
除了所有,我不知道我是否可以实现像链接列表:'下一个'列而不是'订单'列以保留下一个项目ID。但我不知道如何编写以正确顺序检索记录的查询。如果有人对这种方法有一个想法,请分享。
稍有经验的人不会把一列'Order'因为这是已经在SQL保留关键字.... :-) – 2011-12-22 18:20:15