大结果集的多重排名

时间:2011-11-20 14:39:39

标签: mysql

我有一个大的Mysql表(大约200万行)。我希望在其上运行可能匹配多达25k行的搜索(返回的结果将受到限制[例如每页25个])。我想要做的是根据cetain标准对这些结果进行排名,并使用它来对它们进行排序。

我到目前为止的解决方案是创建一个脚本遍历表格并根据我的标准为每一行分配一个分数。根据与理想结果的比较,每个结果都会得到分数。然后我可以在执行选择时通过该分数进行排序,而不是在运行中进行计算。

我当时认为我希望系统的其他用户能够设置他们自己的自定义评分标准。我的第一个想法是停止一个单独的表,其中包含第一个表行id,用户ID和等级。但我认为这个表可能会变得非常大(每个用户200万行)。所以我想到的替代方案到目前为止我的选择是:

1)使用单独的排名表

2)使用特定于用户的排名表

3)即时计算

任何人都有类似问题的经历吗?结果将由用户实时搜索,因此我主要关注的是尽可能快地完成此过程的这一部分。

非常感谢

1 个答案:

答案 0 :(得分:0)

我更喜欢单独的表,因为您可以在重新计算时生成临时新表,并将临时表重命名为真实表。 这也可以帮助您以后绕过锁定问题......