MySql在查询中获得排名

时间:2012-06-22 20:14:13

标签: mysql

以下是我的示例查询:

SELECT userid,count(*)
FROM hits
GROUP BY userid

我的桌子是这样的

id | userid |时间等等

其中id是主键,我使用此表存储页面上的每次访问。 这意味着我的桌子有200,000多行。

对于userid,我想说X我想知道它在查询中的排名,这意味着有多少用户访问过该页面的次数超过了具有该用户ID的用户。

我知道有很多问题,但是它们并不相同,因为

  1. 我的查询已分组
  2. 我在这里尝试了很多答案,有些甚至没有返回任何东西,而其他人需要5-10分钟。我需要它更快。
  3. 任何进一步的疑问请在评论中澄清

    由于

1 个答案:

答案 0 :(得分:0)

在预期返回多行的查询中计数/分组将逐渐变慢,因为查询仍然必须触及表中的每一行。通常,如果您希望经常执行此类报告,并且您希望表继续增长,则应该开始将该值转换为缓存值(因此您应该仍然存储每个结果,但是您还应该添加到计数器上)该用户的用户记录)。当然,这也会引发一个问题:你的user_id列是否有索引,而用户表中是否有外键,这会大大加快查询速度。