2011-11-20 41 views
1

我有一個龐大的Mysql表(大約200萬行)。我想在它上面運行匹配可能高達25k行的搜索(返回的結果將會受到限制[例如每頁25個])。我想要做的是按照cetain標準對這些結果進行排名並使用它們來排序。對於大型結果集的多個排名

我到目前爲止的解決方案是創建一個腳本遍歷表,並根據我的標準爲每行分配一個分數。取決於它與我的理想結果相比,每個結果都會得到分數。然後,我可以在執行選擇時按該分數排序,而不是在飛行中進行計算。

我當時在想,我希望系統的其他用戶能夠設置自己的自定義評分標準。我的第一個想法是設置一個獨立的表格,它將包含第一個表格行ID,一個用戶ID和等級。但是我認爲這個表格可能會變得非常大(每個用戶200萬行)。所以我想替代品至今選項我是:

1)使用單獨的排名表

2)使用用戶特定的排名表

3)動態計算

任何人有有類似問題的任何經驗?結果將由用戶實時搜索,所以我主要關心的是儘可能快地完成這部分過程。

非常感謝

回答

0

我更喜歡單獨的表,你可以生成一個臨時的新表,而重新計算,並臨時表重命名爲真正的表。 這也可能會幫助你稍後繞過鎖定問題...

+0

謝謝,是所有用戶/隊伍的1個單獨的表? – tag