我正在開發一個可以連接兩個表的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