我有一张管理用户分数的表格,例如:
BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB);
现在我想创建一个记分板,可以按每个分数排序(只有降序)。
但是,我不能只查询条目并将它们发送到客户端(使用Javascript呈现它们),因为该表包含数千个条目,并且将所有这些条目发送到客户端会产生不合理的流量。 / p>
我得出的结论是,所有不相关的条目(可能不会在记分板中显示为分数太低的条目)应该在服务器端丢弃,并遵循以下经验法则:
id scoreA scoreB ... scoreX
------ ------- ------- ... -------
1 ... ... ... ...
2 ... ... ... ...
现在我遇到了一个问题,如果可以使用(My)SQL有效地完成这个问题,或者如果这个处理应该在查询数据库的php代码中进行,以保持整个事物的性能。
非常感谢任何帮助!
答案 0 :(得分:2)
使用行而不是列来存储分数。在userid上有综合索引,得分。日期时间列也可能有用。考虑不要使用前10个快照表,只考虑您建议的查找。因此查询中有order by score desc
和Limit 10
。
以下引用并不是Covering Indexes上的权限,而是将该术语丢弃以供您进行调查。祝你好运。
答案 1 :(得分:1)
您可以尝试使用INDEX进行特定和性能增强。 这将查询您的问题的具体结果。 阅读它here
好运,伙计。答案 2 :(得分:0)
我首先会触发查询以获取前10个。然后使用sql中的前10个来触发查询以获取结果。
我无法制定查询,直到我知道你的前10名是什么意思 - 举个例子。