我有一个问题,查询需要太多的时间来执行。这是我的查询
SELECT U.user_id, C.c_id, U.username, U.email, R.reply
FROM users U, conversation C, conversation_reply R
WHERE CASE
WHEN C.user_one =1
THEN C.user_two = U.user_id
WHEN C.user_two =1
THEN C.user_one = U.user_id
END
AND C.c_id = R.c_id_fk
AND (
C.user_one =1
OR C.user_two =1
)
ORDER BY C.c_id DESC
我在conversation_reply表中有250788个记录,存储消息详细信息,然后此查询在结果中给出10225条记录,耗时7.291秒。
请给我一个合适的解决方案。
您可以告诉数据库强制使用任何索引。像下面的
USE INDEX (index1,index2)
你应该限制搜索。
'...ORDER BY C.c_id DESC LIMIT 100'
在显示前100条消息之后,您可以对其余消息进行AJAX处理,因此加载将在后台进行。