减少左连接查询执行时间

时间:2015-09-04 15:28:22

标签: php mysql sql-server join left-join

我正在开发一个可以连接两个表的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秒。
有没有人有任何想法减少这个时间?
对不起,我的英语太差了。)

1 个答案:

答案 0 :(得分:1)

您可以尝试以下查询。这当然会减少一些执行时间。您可以在select语句中指定字段名称而不是*符号。

这是更新的查询:

SELECT amg_order.* FROM amg_order 
LEFT JOIN amg_like ON amg_order.order_id = amg_like.order_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 LIMIT 10;