相关疑难解决方法(0)

在两列上使用COUNT和GROUP BY进行极慢的SQL查询

我正在存档这个网络论坛,通常每周清理一次.所以我屏幕抓取它,并将其存储到我的数据库(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很新,所以我不太确定这是不对的,或者我怎么做错了?

sql database rdbms relational

4
推荐指数
1
解决办法
2671
查看次数

标签 统计

database ×1

rdbms ×1

relational ×1

sql ×1