查询需要太多时间来执行

时间:2015-05-15 07:31:47

标签: php mysql

我的查询问题需要花费太多时间才能执行。 这是我的查询

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秒。

请给我正确的解决方案。

2 个答案:

答案 0 :(得分:1)

您应该限制搜索。

'...ORDER BY C.c_id DESC LIMIT 100'

在显示前100个消息后,您可以为其余的消息进行AJAX,因此加载将在后台进行。

答案 1 :(得分:1)

您可以告诉数据库强制使用任何索引。 喜欢下面

USE INDEX (index1,index2)