Luk*_*uka 4 sql database rdbms relational
我正在存档这个网络论坛,通常每周清理一次.所以我屏幕抓取它,并将其存储到我的数据库(PostgreSQL).
我还对数据进行了一些分析,其中有一些图表供用户欣赏,比如论坛最活跃的时间,等等.
所以我有一个帖子表,如下:
Column | Type
------------+------------------------------
id | integer
body | text
created_at | timestamp without time zone
topic_id | integer
user_name | text
user_id | integer
Run Code Online (Sandbox Code Playgroud)
我现在想要为每个用户提供一个帖子计数,用于我的小十大海报表.
我想出了这个:
SELECT user_id, user_name, count(*)
FROM posts
GROUP BY user_id, user_name
ORDER BY count DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)
结果证明非常慢.9秒,目前在帖子表中只有大约30万行.
如果我只分组一列,它只需要半秒钟,但我需要两个.
我对关系数据库和SQL很新,所以我不太确定这是不对的,或者我怎么做错了?
And*_*mar 11
可能只有一个用户具有特定ID,因此max(user_name)应该相同user_name.然后,您可以对单个列进行分组,您的帖子表明其工作速度更快:
SELECT user_id, max(user_name), count(*)
FROM posts
GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)