我的查询问题需要花费太多时间才能执行。 这是我的查询
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个Recoderd,用于存储消息详细信息,然后此查询在结果中提供10225条记录,并且需要7.291秒。
请给我正确的解决方案。
答案 0 :(得分:1)
您应该限制搜索。
'...ORDER BY C.c_id DESC LIMIT 100'
在显示前100个消息后,您可以为其余的消息进行AJAX,因此加载将在后台进行。
答案 1 :(得分:1)
您可以告诉数据库强制使用任何索引。 喜欢下面
USE INDEX (index1,index2)