簡體   English   中英

臨時表的MySQL查詢優化

[英]Mysql Query Optimization for Temporary table

有人可以幫助我進行Mysql Query優化嗎?

查詢:

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

解釋節目

lm表使用Using where; 使用臨時; 在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`)

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

提前致謝。 S.智利。

如果您在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包含聯接隊列中第一個表以外的表中的列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM