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

Javascript 选择MySQL中多行的前十个条目,javascript,php,mysql,sql,performance,Javascript,Php,Mysql,Sql,Performance,我有一个管理用户分数的表格,例如: id scoreA scoreB ... scoreX ------ ------- ------- ... ------- 1 ... ... ... ... 2 ... ... ... ... 现在我想创建一个记分板,它可以按每个分数排序(只按降序排列) 但是,我不能只查询条目并将它们发送到客户端(用Javascript呈现它

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

    id   scoreA   scoreB    ...   scoreX
------  -------  -------    ...  -------
     1      ...      ...    ...      ...
     2      ...      ...    ...      ...
现在我想创建一个记分板,它可以按每个分数排序(只按降序排列)

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

我得出的结论是,所有不相关的条目(由于分数太低,可能不会出现在记分板上的条目)都应该按照以下经验法则在服务器端丢弃:

If any of the scores is within the top ten for this specific score keep the entry.
If none of the scores is within the top ten for this specific score discard it.
现在我遇到了这样一个问题:使用(我的)SQL是否可以有效地实现这一点,或者该处理是否应该在查询数据库的php代码中进行,以保持整个过程的性能


非常感谢您的帮助

使用行而不是列来存储分数。在userid、score上具有复合索引。datetime列也很有用。无论如何,不要考虑前10张快照表,只是你建议的查找。因此,查询中的
order by score desc
Limit 10
在查询中


并不是说下面的参考是权威,而是为了你的调查而抛弃这个术语。祝你好运。

用行而不是列来存储分数。在userid、score上具有复合索引。datetime列也很有用。无论如何,不要考虑前10张快照表,只是你建议的查找。因此,在查询中,
按分数排序desc
限制10


并不是说下面的参考是权威,而是为了你的调查而抛弃这个术语。祝你好运。

用行而不是列来存储分数。在userid、score上具有复合索引。datetime列也很有用。无论如何,不要考虑前10张快照表,只是你建议的查找。因此,在查询中,
按分数排序desc
限制10


并不是说下面的参考是权威,而是为了你的调查而抛弃这个术语。祝你好运。

用行而不是列来存储分数。在userid、score上具有复合索引。datetime列也很有用。无论如何,不要考虑前10张快照表,只是你建议的查找。因此,在查询中,
按分数排序desc
限制10


并不是说下面的参考是权威,而是为了你的调查而抛弃这个术语。祝你好运。

我会首先发出一个查询以获得前10名。然后使用sql中排名前10位的查询获取结果


在我知道你所说的前10名是什么意思之前,我无法对查询进行公式化-举个例子。

我会首先启动一个查询以获得前10名。然后使用sql中排名前10位的查询获取结果


在我知道你所说的前10名是什么意思之前,我无法对查询进行公式化-举个例子。

我会首先启动一个查询以获得前10名。然后使用sql中排名前10位的查询获取结果


在我知道你所说的前10名是什么意思之前,我无法对查询进行公式化-举个例子。

我会首先启动一个查询以获得前10名。然后使用sql中排名前10位的查询获取结果


在我知道你所说的前10名是什么意思之前,我无法对查询进行公式化-举个例子。

你可以尝试使用索引来提高特定的性能。 这将为您的问题类型查询特定结果。 读一读


祝你好运,伙计。

你可以尝试使用索引来提高具体性能。 这将为您的问题类型查询特定结果。 读一读


祝你好运,伙计。

你可以尝试使用索引来提高具体性能。 这将为您的问题类型查询特定结果。 读一读


祝你好运,伙计。

你可以尝试使用索引来提高具体性能。 这将为您的问题类型查询特定结果。 读一读


祝你好运,伙计。

我同意,这是首选方法。就我个人而言,我会使用一个主细节表,但这对于喵喵来说可能太多了。它是一个覆盖索引(也许),甚至不需要来自数据页的数据。没问题。如果你像@DanielSharp提到的那样选择*或者在第三列之后,那么索引将不再是覆盖索引,尽管它将是一个有用的索引。做专栏的问题。。。ColumnX在一行,是不是,你需要重新排列顺序,不是吗?另外,它是非规范化的,不必要的housekeeping如果您要使用Create Event(请参阅),并且它每小时运行一次,那么一行当然可以是快速查找。请注意,在堆栈上,对于标记统计信息,统计信息在一天结束时更新。我同意,这是首选方法。就我个人而言,我会使用一个主细节表,但这对于喵喵来说可能太多了。它是一个覆盖索引(也许),甚至不需要来自数据页的数据。没问题。如果你像@DanielSharp提到的那样选择*或者在第三列之后,那么索引将不再是覆盖索引,尽管它将是一个有用的索引。做专栏的问题。。。ColumnX在一行,是不是,你需要重新排列顺序,不是吗?另外,它是非规范化的,不必要的housekeeping如果您要使用Create Event(请参阅),并且它每小时运行一次,那么一行当然可以是快速查找。请注意,在堆栈上,对于标记统计信息,统计信息在一天结束时更新。我同意,这是首选方法。就我个人而言,我会使用一个主细节表,但这对于喵喵来说可能太多了。它是一个覆盖索引(也许),甚至不需要来自数据页的数据。没问题。如果你像@DanielSharp提到的那样选择*,或者在第三列之后,那么索引将不再是cov