SQL Server数据库中的排序列表

Fra*_*ank 2 sql t-sql sql-server

我想知道在数据库中维护排序列表是否可能/好.

例如,我有一个优先级为1~100的项目列表.每次插入时,数据库都可以将其插入到正确的位置,这样当我调用时.select(20),数据库可以返回前20个具有最高优先级的项目.

Con*_*rix 6

添加名为priority的字段.适当地填充数据并按其排序,并根据您的数据库选择前20个例如

SELECT TOP 20 [Your fields here] 
FROM   table 
ORDER  BY priority 
Run Code Online (Sandbox Code Playgroud)

要么

SELECT [Your fields here] 
FROM   table 
ORDER  BY priority 
LIMIT 20
Run Code Online (Sandbox Code Playgroud)

为该字段添加索引也可能是一个好主意.

这是一个非常持久的解决方案.利用行物理存储在表中的顺序的任何其他解决方案将非常脆弱.

  • 我倾向于做的,大多数人发现奇怪的是使优先级列浮动.这样,你可以*通常*通过平均它们的优先级在任何两个现有行之间插入一个新行.您很少需要重新编号多行的优先级. (2认同)