小编Luk*_*uka的帖子

在两列上使用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
查看次数

有人告诉我为什么我的数据库设计是愚蠢的,以及我如何解决它

所以我有这些车辆,它们有很多不同类型.每种类型都有自己的表,具有许多属性.然后我有一个"车辆"表,其中包含每张桌子中所有车辆的ID和类型.车辆可以有照片,因此我有一张"照片"表,带有vehicle_id,将照片链接到它所属的车辆.

现在每辆车都有一个设备列表,我将其作为JSON阵列存储在一个"设备"列中.

像这样:http://pastie.org/353195

我怎么能更好地做到这一点,尤其是设备柱?

database rdbms

2
推荐指数
1
解决办法
509
查看次数

标签 统计

database ×2

rdbms ×2

relational ×1

sql ×1