>Something like:
>
>SELECT A.ID
>FROM A
>LEFT JOIN B
>ON A.ID = B.ID
>WHERE B.ID IS NULL
>
>Might be more efficient?
Nope. I rewrote such query to SELECT ID FROM A WHERE ID NOT IN (SELECT ID FROM 
B);

SELECT COUNT(*) AS unread FROM mboxes WHERE
 idMbox = %d AND idMsg IN (SELECT idMsg FROM
 msgStatus WHERE idStatus = %d);

Is almost instant
Where as
SELECT COUNT(*) AS unread FROM msgStatus AS b
  JOIN mboxes AS a ON b.idMsg = a.idMsg WHERE a.idMbox = %d
  AND b.idStatus = %d;

Would take about 9 seconds.
mboxes has 18.000 rows, msgStatus 23.000
So if one would like to argue, I can provide additional details.

Regards,
Miha


Reply via email to