一盘榨、聯(lián)合 show?warnings使用?
? ? ? ? ? ? 在explain語(yǔ)句后使用,可打印優(yōu)化器優(yōu)化后的sql語(yǔ)句
二、explain列
? ? ? ? ? ? id列:要執(zhí)行的sql語(yǔ)句數(shù)量井佑,id值越大優(yōu)先級(jí)越高
? ? ? ? ? ? select_type列:為簡(jiǎn)單查詢還說(shuō)復(fù)雜查詢
? ? ? ? ? ? ? ? ? ? 1.SIMPLE:簡(jiǎn)單查詢属铁,不包括子查詢
? ? ? ? ? ? ? ? ? ? 2.PRIMARY:復(fù)雜查詢外層查詢
? ? ? ? ? ? ? ? ? ? 3.DEPENDENT SUBQUERY:復(fù)雜查找中子查詢,不在from中
? ? ? ? ? ? ? ? ? ? 4.DERIVED:復(fù)雜查詢中子查詢躬翁,在from中?
? ? ? ? ? ? ? ? ? ? 5.UNION:使用union或者union all查詢后焦蘑,union后的查詢 ;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? union和union all區(qū)別:union會(huì)合并相同結(jié)果? ? ? ? ? ?
? ? ? ? ? ? ? ? ?注: set session optimizer_switch='derived_merge=on';開啟衍生表的合并優(yōu)化,mysql5.7之后默認(rèn)開啟
? ? ? ? ? ? ? ? ? ? ? ? ? set session optimizer_switch='derived_merge=off';關(guān)閉衍生表的合并優(yōu)化
? ? ? ? ? ? ? table列:? ? 表示訪問的表名盒发。若為<derivedN>表示臨時(shí)表例嘱,依賴于id=N的表查詢
? ? ? ? ? ? ? type列:表示關(guān)聯(lián)類型和訪問類型,即sql訪問級(jí)別
? ? ? ? ? ? ? ? ? ? ? ? ????????訪問級(jí)別性能從高到低為:system-->const-->eq_ref-->ref-->range-->index-->all
? ? ? ? ? ? ? ? ? ? ? ? ????????若級(jí)別在range之后則考慮sql優(yōu)化
? ? ? ? ? ? ? ? ? ? ? ? ????????若為NULL則表示不訪問表或者索引
? ??????????????????????system宁舰,const:表中只有一條匹配記錄
? ? ? ? ? ? ? ? ? ? ? ? eq_ref:使用主鍵或唯一索引連接查詢最多返回一條匹配記錄
? ? ? ? ? ? ? ? ? ? ? ? ref:不使用主鍵或者唯一索引連接查詢拼卵,使用普通索引查詢
? ? ? ? ? ? ? ? ? ? ? ? range:出現(xiàn)在in? between? > < =等查詢中,并且使用索引查詢
? ? ? ? ? ? ? ? ? ? ? ? index:掃描全索引蛮艰,一般為掃描二級(jí)索引所有葉子節(jié)點(diǎn)
? ? ? ? ? ? ? ? ? ? ? ? all:掃描全表腋腮,一般為掃描了聚簇索引所有葉子節(jié)點(diǎn)
? ? ? ? ? ? ? ? ?possible_key列: 可能用到的索引
? ? ? ? ? ? ? ? ?key列:實(shí)際用到的索引
? ? ? ? ? ? ? ? ?key_len列:使用的索引字節(jié)數(shù)????
? ? ? ? ? ? ? ? ? ? ? ? 1.字符串 char(n):n個(gè)字節(jié)長(zhǎng)度? varcher(n):若為UTF-8,則長(zhǎng)度為3n+2?
? ? ? ? ? ? ? ? ? ? ? ? ?2.數(shù)字 tinyint:1字節(jié)長(zhǎng)度? smallint :2字節(jié)長(zhǎng)度? ?int:4字節(jié)長(zhǎng)度? ?bigint:8字節(jié)長(zhǎng)度
? ? ? ? ? ? ? ? ? ? ? ? ?3.時(shí)間類型:date :3字節(jié)長(zhǎng)度? timestamp :4字節(jié)長(zhǎng)度? datetime:8字節(jié)長(zhǎng)度
? ? ? ? ? ? ? ? ? ? ? ? ?4.若字段可以為null,則要要多1字節(jié)存儲(chǔ)是否為null
? ? ? ? ? ? ? ? ? ?ref列:使用索引時(shí)用到的列或常量?const為常量,字段名字
? ? ? ? ? ? ? ? ? ?rows列:預(yù)計(jì)讀取的行數(shù)壤蚜。不為最終讀取行數(shù)即寡,僅為優(yōu)化器執(zhí)行時(shí)預(yù)計(jì)行數(shù)
? ? ? ? ? ? ? ? ? ?Extra列:條件信息
? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.Using index:使用覆蓋索引
? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.Using where :使用where條件,查詢列未被索引覆蓋
? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.Using index condition:使用二級(jí)索引袜刷,并為范圍查詢
? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.Using temporary:需要?jiǎng)?chuàng)建臨時(shí)表處理查詢聪富,考慮用覆蓋索引優(yōu)化
? ? ? ? ? ? ? ? ? ? ? ? ? ? 5.Using filesort:外部排序,數(shù)據(jù)少時(shí)候使用內(nèi)存排序水泉,數(shù)據(jù)大時(shí)則使用磁盤排序
? ? ? ? ? ? ? ? ? ? ? ? ? ? 6.select table optimized away:使用了聚合函數(shù)