2015-05-29 46 views
0

有人可以幫助我進行Mysql查詢優化嗎?針對臨時表的Mysql查詢優化

查詢:

SELECT 
lm.lead_id,lm.lead_title,lm.lead_active,lm.lead_da te, 
la.lead_assign_add_date 
FROM 
lms_lead_master lm 
LEFT JOIN lms_lead_assign la ON lm.lead_id = la.lead_id 
WHERE 
lm.lead_active = '1' 
GROUP BY 
lm.lead_id 
ORDER BY 
la.lead_assign_add_date desc 

解釋節目

流明表使用使用其中;使用臨時;在Extra中使用filesort。

Index : lm -> PRIMARY KEY (`lead_id`), 
KEY `fk_lms_status_id` (`lead_status_id`), 
KEY `fk_lms_source_id` (`lead_source_id`), 
KEY `fk_lms_user_id` (`user_id`), 
KEY `opt_master` (`lead_active`,`lead_date`) 
la ->PRIMARY KEY (`lead_assign_id`), 
KEY `fk_lms_assignee` (`lead_assignee_id`), 
KEY `fk_lms_assigned` (`lead_assigned_to_id`), 
KEY `fk_lms_user` (`user_id`), 
KEY `fk_lms_lead_id` (`lead_id`), 
KEY `lead_assign_date` (`lead_assign_add_date`) 

如何避免臨時表和文件排序?

在此先感謝。南非智利。

回答

0

如果你在這裏的文件http://dev.mysql.com/doc/refman/5.1/en/internal-temporary-tables.html仔細看,你會發現你的答案

如果有一個ORDER BY子句和不同的GROUP BY子句,或者如果 的ORDER BY或GROUP BY包含除了連接隊列中第一個表的 以外的表中的列,將創建一個臨時表。

和您的查詢做了同樣的

  • ORDER BY子句和不同的GROUP BY子句。

  • ORDER BY或GROUP BY包含在加入隊列

比所述第一表中的其他表中的列