Using filesort | MySQL 有兩種方式可以生成有序的結(jié)果,通過(guò)排序操作或者使用索引,當(dāng) Extra 中出現(xiàn)了 Using filesort 說(shuō)明 MySQL 使用了后者,但注意雖然叫 filesort 但并不是說(shuō)明就是用了文件來(lái)進(jìn)行排序,只要可能排序都是在內(nèi)存里完成的。大部分情況下利用索引排序更快,所以一般這時(shí)也要考慮優(yōu)化查詢了。使用文件完成排序操作,這是可能是 ordery by,group by 語(yǔ)句的結(jié)果,這可能是一個(gè) CPU 密集型的過(guò)程,可以通過(guò)選擇合適的索引來(lái)改進(jìn)性能,用索引來(lái)為查詢結(jié)果排序。 |
Using temporary | 用臨時(shí)表保存中間結(jié)果,常用于 GROUP BY 和 ORDER BY 操作中,一般看到它說(shuō)明查詢需要優(yōu)化了,就算避免不了臨時(shí)表的使用也要盡量避免硬盤臨時(shí)表的使用。 |
Not exists | MYSQL 優(yōu)化了 LEFT JOIN,一旦它找到了匹配 LEFT JOIN 標(biāo)準(zhǔn)的行, 就不再搜索了。 |
Using index | 說(shuō)明查詢是覆蓋了索引的,不需要讀取數(shù)據(jù)文件,從索引樹(索引文件)中即可獲得信息。如果同時(shí)出現(xiàn) using where,表明索引被用來(lái)執(zhí)行索引鍵值的查找,沒(méi)有 using where,表明索引用來(lái)讀取數(shù)據(jù)而非執(zhí)行查找動(dòng)作。這是 MySQL 服務(wù)層完成的,但無(wú)需再回表查詢記錄。 |
Using index condition | 這是 MySQL 5.6 出來(lái)的新特性,叫做“索引條件推送”。簡(jiǎn)單說(shuō)一點(diǎn)就是 MySQL 原來(lái)在索引上是不能執(zhí)行如 like 這樣的操作的,但是現(xiàn)在可以了,這樣減少了不必要的 IO 操作,但是只能用在二級(jí)索引上。 |
Using where | 使用了 WHERE 從句來(lái)限制哪些行將與下一張表匹配或者是返回給用戶。注意:Extra 列出現(xiàn) Using where 表示 MySQL 服務(wù)器將存儲(chǔ)引擎返回服務(wù)層以后再應(yīng)用 WHERE 條件過(guò)濾。 |
Using join buffer | 使用了連接緩存:Block Nested Loop,連接算法是塊嵌套循環(huán)連接;Batched Key Access,連接算法是批量索引連接 |
impossible where | where 子句的值總是 false,不能用來(lái)獲取任何元組 |
select tables optimized away | 在沒(méi)有 GROUP BY 子句的情況下,基于索引優(yōu)化 MIN/MAX 操作,或者對(duì)于 MyISAM 存儲(chǔ)引擎優(yōu)化 COUNT(*)操作,不必等到執(zhí)行階段再進(jìn)行計(jì)算,查詢執(zhí)行計(jì)劃生成的階段即完成優(yōu)化。 |
distinct | 優(yōu)化 distinct 操作,在找到第一匹配的元組后即停止找同樣值的動(dòng)作 |