我在我的網站上有一個自定義消息傳遞功能,並且當顯示用戶擁有的消息數時,我使用聯合查詢來這樣做,因爲有兩種類型的消息。將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