我正在尝试使用两个表(一个称为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/