【发布时间】:2010-07-31 18:53:48
【问题描述】:
我有一个包含数据的以下 SQL 表
ProductList
id order productname
79 1 name1
42 2 name2
67 3 somename
88 4 othername
99 5 XYZ
66 6 ABC
显示顺序非常不稳定,会经常变化,用户会添加或删除项目并重新排序。
我应该如何在不更新多条记录的情况下处理这种情况。示例:如果用户在 1 和 2 订单之间输入新产品,我不想更新 2 下的所有记录的顺序,如果有人将订单 3 切换到 4,我不想更新 3 下的每条记录。
【问题讨论】:
-
没有计划任务来“重新排序”订单,它必须是实时的。
-
就像 Will A 说的 - 从它们之间距离很远的值开始。当你必须在两者之间插入一些东西时,将它插入到有问题的值之间的一半。也许每月一次,将所有记录更改回 100 步左右。无需重新排序。
-
我对计划任务的建议是在安静期间运行计划的“维护”任务 - 将订单值设置回“更清洁”的值。
-
是什么阻止您使用多个更新以及围绕它们的事务?你甚至不在READ COMMITTED 隔离中?还有,什么是frequently在会经常变化??
-
某些数据库(如 SQL Server)允许您即时计算行数。这样就够了吗?能够在查询时计算行号(使用 ROW_NUMBER() 函数)?如果没有,您可以通过运行这样的查询并更新“订单”列来定期更新该表,比如每小时更新一次 - 这是否足够好(每隔一小时左右更新一次表)?
标签: sql database-design