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

相關問題