在MySQL中选择多行的前十个条目

时间:2015-09-05 11:47:50

标签: javascript php mysql sql performance

我有一张管理用户分数的表格,例如:

BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB);

现在我想创建一个记分板,可以按每个分数排序(只有降序)。

但是,我不能只查询条目并将它们发送到客户端(使用Javascript呈现它们),因为该表包含数千个条目,并且将所有这些条目发送到客户端会产生不合理的流量。 / p>

我得出的结论是,所有不相关的条目(可能不会在记分板中显示为分数太低的条目)应该在服务器端丢弃,并遵循以下经验法则:

    id   scoreA   scoreB    ...   scoreX
------  -------  -------    ...  -------
     1      ...      ...    ...      ...
     2      ...      ...    ...      ...

现在我遇到了一个问题,如果可以使用(My)SQL有效地完成这个问题,或者如果这个处理应该在查询数据库的php代码中进行,以保持整个事物的性能。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

使用行而不是列来存储分数。在userid上有综合索引,得分。日期时间列也可能有用。考虑不要使用前10个快照表,只考虑您建议的查找。因此查询中有order by score descLimit 10

以下引用并不是Covering Indexes上的权限,而是将该术语丢弃以供您进行调查。祝你好运。

答案 1 :(得分:1)

您可以尝试使用INDEX进行特定和性能增强。 这将查询您的问题的具体结果。 阅读它here

好运,伙计。

答案 2 :(得分:0)

我首先会触发查询以获取前10个。然后使用sql中的前10个来触发查询以获取结果。

我无法制定查询,直到我知道你的前10名是什么意思 - 举个例子。