我在我的网站上有一个自定义消息传递功能,并且当显示用户拥有的消息数时,我使用联合查询来这样做,因为有两种类型的消息。将MySQL查询从UNION转换为更高效的东西
我这样做如下:
SELECT COUNT(m.messageid) type_a_messagecount
FROM messages m,
messagerecipients r
WHERE m.messageid = r.messageid AND
(
m.type = 0 OR
m.type = 2
) AND
r.read = 0 AND
r.trashed = 0 AND
r.deleted = 0 AND
r.userid = 1 AND
r.authorid <> 1
UNION
SELECT COUNT(m.messageid) type_b_messagecount
FROM messages m,
messagerecipients r
WHERE m.messageid = r.messageid AND
(
m.type = 1
) AND
r.read = 0 AND
r.trashed = 0 AND
r.deleted = 0 AND
r.userid = 1 AND
r.authorid <> 1
这工作,但东西告诉我它的效率极其低下。
有没有一种方法来简化这个或我坚持使用UNION查询?
谢谢。
待办事项你需要单独的值还是将它们一起添加到一起? – 2011-02-09 21:02:26
这两个值需要分开。 – Tom 2011-02-09 21:03:26