1

假设数据库表包含有关每行中的搜索词的信息。该表具有整数“等级”列以指示搜索条件在网站上呈现的顺序。在不断更新数据库中维护排名顺序

如何最好地实施和维护此排名顺序?

我想避免的问题是编号为1,2,3,4,...,100的词,例如,当等级50突然变得有趣时,它将其新等级设置为1,然后将所有项他们的排序编号必须增加1。

当然,将初始排序数字设置为100,200,300,400等会留下一些空间用于移动,但在某个时刻它会中断。

另一种方法可以用一些固定的偏移量来间隔队列,但它也可能在现实世界场景中的某个时候中断。

所以有没有其他的不同的方法来处理这个.... (也可能是相关的搜索引擎是如何保持排名和重新排序,但我无法找到任何运气)

+0

它不能被视为重复,这个问题是关于在大型数据库中频繁更新行的相对独立行列。这个等级字段中的所有数据都是完全独立的,可以作为系统需求(在搜索算法的情况下)。 **没有其他列在索引/排名结果上发挥任何作用** – Jitendra

+0

@Jitendra你已经解决了这个问题吗? – DoNotArrestMe

回答

0

这个怎么样的想法。像队列一样。

创建附加表Task(id, new_rank, ...)。 为插入的主表创建触发器。

当新行即将在主表中插入然后执行:

  1. 不允许插入男表新行;
  2. Task表中插入新行。例如

运行每隔一小时存储过程,其中:

  1. 在光标选择从Task表中的所有新行;
  2. In loop:

    2.1。在主表中运行增加(准备)等级(可以插入新的等级值);

    2.2。在man表中插入新行;

    2.3。从Task删除行。

也许您需要在交易中执行2.1-2.3项。

+0

如果数据是多个GB,它可能无法正常工作。 我不知道为什么,但一些傻瓜编辑我的问题完全不同的答案..我讨厌这个关于Stackoverflow的非aprooval的事情,这只是让我生气,那些不知道我的问题的人走改变我的问题,并消失! – Jitendra

+0

@Jitendra你可以在这里看到谁编辑了你的消息[http://stackoverflow.com/posts/20937158/revisions](http://stackoverflow.com/posts/20937158/revisions)。你也可以在这里联系支持[http://stackoverflow.com/contact](http://stackoverflow.com/contact)。 – DoNotArrestMe

+0

谢谢你... 谢谢你的回答。 我原来的问题是在搜索引擎排名的上下文中,如果排名变化是通过递归更新处理的,数百万条记录将被更改... – Jitendra

相关问题