【发布时间】:2013-10-15 13:58:50
【问题描述】:
我有一个名为 wp_bp_activity 的表,其中包含许多列,我认为我应该使用其中的 4 个列来解决这个问题:id、type、item_id 和 date_recorded。
1 - 当有人发布新活动时,type 是 activity_update,item_id 是 0
2 - 当有人对某项活动发表新评论时,其type 为activity_comment 并且item_id 是id 列中存在的活动ID
3 - 在两者中,date_recorded 是插入数据的日期。
表中还有更多types。
但我只想获取最近有人回复的type 和activity_update 的行或是新的(我认为基于date_recorded)
我试过的是:
SELECT a.*, b.*
FROM wp_bp_activity as a, wp_bp_activity as b
WHERE
((b.type = 'activity_update') OR (b.type = 'activity_comment' AND b.item_id = a.id))
order by cast(a.date_recorded as datetime) desc
limit 0,20
执行时间过长,以内存不足错误结束。
感谢任何有关此类查询的帮助。
更新 #1
wp_bp_activity table
id type item_id date_recorded
|---------|-----------------------|-----------|--------------------------
| 12081 | activity_comment | 12079 | 2013-10-18 07:27:01
|---------|-----------------------|-----------|--------------------------
| 12080 | activity_update | 0 | 2013-10-18 07:26:40
|---------|-----------------------|-----------|--------------------------
| 12079 | activity_update | 0 | 2013-10-17 05:15:43
我想从这个表中的哪些行是这些 id 按此顺序排列:
12079
12080
我不想得到的东西:
activity_comment 类型
应按什么顺序获取行?
如您所见,activity_comment 类型的行有一个item_id,其值为12079。所以12079是最近有人评论的最新活动,12080没有cmets,只是发布了。所以我两者都想要,但顺序如下:
12079
12080
【问题讨论】:
-
请revo,看看我的更新... :)
-
我的主要问题是您是否为表格添加了体面的索引? :)