tables:employeeemployee_orgn:聯(lián)合主鍵(employee_id,orgn_id),索引1:employee_id,索引2:orgn_idorgnsql:explain SELECT DISTINCT
e.*FROM
employee e
LEFT JOIN
employee_orgn eo ON eo.employee_id = e.id LEFT JOIN
orgn o ON o.id = eo.orgn_idWHERE
e.state != 'deleted'
AND e.state != 'hidden'
AND (o.state != 'hidden' OR o.state IS NULL)ORDER BY e.id DESCexplain:Q:這里join聯(lián)查,mysql嵌套循環(huán)查詢了10的8次方的數(shù)量級嗎?為什么有臨時表,和排序為什么是文件排序為什么第二行是覆蓋索引希望講解一下這個explain結(jié)果,優(yōu)化分析感激不盡呀~
1 回答

炎炎設計
TA貢獻1808條經(jīng)驗 獲得超4個贊
1、注意看數(shù)字8的表頭key_len,說的是使用索引字段的長度。
2、Using tempory, Using filesort是受order by語句的影響,你可以去掉order by再看一下執(zhí)行計劃。
3、eo表使用覆蓋索引是合理的,因為索引已經(jīng)包含了查詢所需的所有數(shù)據(jù)。
添加回答
舉報
0/150
提交
取消