我正在尝试使用两个表(一个称为Message_Topic和Message)创建收件箱消息系统。 Message_Topic包含创建的所有主题,并且Message表包含每个主题内的消息对话。

我陷入所有主题的选择中。

我的查询如下:

来自用户uo,用户u,User_Message_Topic umt的SELECT umt.intTopicId

哪里umt.intCreatorId = uo.intUserId
AND umt.intUserToId = u.intUserId
AND((umt.intCreatorId ='1'AND umt.blnReplied)OR umt.intUserToId ='1')
AND blnInboxHide =假

按dtmLastSENT DESC LIMIT排序0,10`

基本上,我需要选择所有已发送给我的用户“ intUserToId”或由我发送并已回复的所有消息。

此查询需要0.85s来运行,这太慢了。

关于如何解决此问题的任何线索?

提前致谢。

阿明

最佳答案

SELECT umt.intTopicId FROM User_Message_Topic umt
LEFT JOIN User uo ON umt.intCreatorId = uo.intUserId
LEFT JOIN User u ON umt.intUserToId = u.intUserId
WHERE
((umt.intCreatorId = '1' AND umt.blnReplied) OR umt.intUserToId = 1) AND
blnInboxHide = false
ORDER BY dtmLastSent DESC LIMIT 0,10


我不知道那是否会很快,但请试一试。

关于mysql - MySQL消息系统慢查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3633193/

10-09 04:53