2011-09-20 146 views
1

由於某些原因,在添加2個以上ORDER BY後,我的查詢變得非常緩慢。有人可以幫我解決它嗎?我真的需要使用以下ORDER BY條款:MySQL - 添加多個ORDER BY後頁面加載速度緩慢

ORDER BY candidates.user_id DESC, candidates.usr_type ASC, all_users.user_id DESC 
+0

運行在您的查詢說明,包括在你的答案的輸出,例如解釋選擇foo FROM bar ORDER BY xxx; –

+0

不知何故,我改變了左連接的幾個內連接,它不再需要很長時間,永遠不會再使用內連接。編輯:只有<4結果更快,更多結果更慢 – JohnU43

+0

您最好理解真正發生的事情,而不是一蹴而就地決定「永遠不使用內連接」 –

回答

1

請確保您有您所訂購的所有字段的索引。

+0

這不是問題。 – Johan

3

主要的問題是你正在混合排序順序,這在MySQL中很慢。
要麼ORDER BY一切ASC或DESC,但不要混合它們。

一個解決方案是爲usr_type定義一個額外的副本字段,其運行順序相反。 像這樣

Example 
------------------------------- 
id  usr_type alt_usr_type 

1  1   99 
2  2   98 
3  1   99 
4  5   95 

現在,您可以定義選擇作爲

ORDER BY candidates.user_id DESC 
     , candidates.alt_usr_type DESC 
     , all_users.user_id DESC 

和您的查詢將運行得更快。

參見:http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

+0

如果那是真的,我會感到驚訝! –

+0

http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html'tis true though! –

+0

有+1先生! –