我正在开发一个可以连接两个表的sql查询并返回一些结果。
我有第一个表中的2个表我保存我的订单,并在另一个表中保存我喜欢的信息。
我想从订单表显示给用户图片,用户还不喜欢图片。我用这个查询减少左连接查询执行时间
SELECT amg_order.*
FROM amg_order
LEFT OUTER JOIN amg_like ON amg_like.order_id=amg_order.order_id
AND amg_like.user_id=:user_id
WHERE amg_order.status = '1'
AND amg_order.user_id != :user_id
AND (amg_like.user_id != :user_id || amg_like.user_id is null)
ORDER BY amg_order.likeType DESC, RAND()
该查询返回正确的结果,但是当类似的信息超过15000的时间来执行这个语句已经6秒。
有没有人有任何想法来减少这个时间?
对不起,我的英语太糟糕了:)
'ORDER BY .... RAND()'是杀你的表现,很可能。 “兰德()”是头号罪魁祸首。 – Andrew
而不是仅仅使用列名称而不是*而是使用<= .if。如果需要使用以其他方式排序,那么更快地检索数据并使用RAND()? – mohan111
@Andrew是的,我同意你 – mohan111