假设数据库表包含有关每行中搜索词的信息。该表有一个整数“排名”列,用于指定搜索字词在网站上的显示顺序。
如何最好地实施和维护此排名顺序?
我想要避免的问题是使用术语编号1,2,3,4,...,100,例如,当等级50突然变得有趣时,它将其新等级设置为1然后它们之间的所有术语必须将他们的排序编号增加一个。
当然,将初始排序数设置为100,200,300,400等会留出一些空间来移动,但在某些时候它会断开。
另一种方法可以是将排名与一些固定的偏移量隔开,但在现实世界的情况下,它也可能会在某个时间内中断。
还有其他任何不同的方法来处理这个.... (它可能与搜索引擎如何维持排名和重新排序有关,但我找不到运气)
答案 0 :(得分:0)
这个想法怎么样?像队列一样。
创建附加表Task(id, new_rank, ...)
。
在插入时为主表创建触发器。
当要在主表中插入新行时,请执行以下操作:
Task
表中插入新行。运行例如每小时存储过程:
Task
表中选择所有新行; 循环:
2.1。在主表中运行增加(准备)等级(能够插入新的行等级值);
2.2。在man表中插入新行;
2.3。从Task
删除行。
也许你需要在交易中做2.1-2.3项。