SQL是第四代編程語言。特點(diǎn)是并不關(guān)心實(shí)現(xiàn)細(xì)節(jié),只關(guān)心想做些什么,需要什么東西。由于這個(gè)原因,并不清楚數(shù)據(jù)庫是如何查詢,有時(shí)寫出的SQL往往執(zhí)行效率低下。比如在一個(gè)表中建了索引,由于不注意細(xì)節(jié),寫出的SQL并不走索引。通過執(zhí)行計(jì)劃可來檢查SQL的執(zhí)行。這里對(duì)執(zhí)行計(jì)劃做了總結(jié)首先建個(gè)`user```int(11),`name`(255)NULL,`age`int(11),``int(11)NULL,(``)==gbk做一個(gè)簡(jiǎn)單的執(zhí)行計(jì)劃:對(duì)上面的結(jié)果進(jìn)行說明:(1)id:包含一組數(shù)字,表示查詢中執(zhí)行子句或操作表的順序id相同,執(zhí)行順序由上至下如果是子查詢,id的序號(hào)會(huì)遞增,id值越大優(yōu)先級(jí)越高,越先被執(zhí)行(2)::簡(jiǎn)單表,沒有表關(guān)聯(lián)和子查詢:主查詢UNION:UNION中第二個(gè)或者后面的查詢語句:子查詢第一個(gè)(3)table:查詢語句中涉及的表名(4)type:表的連接類型,按照?qǐng)?zhí)行效率由高到低mysql數(shù)據(jù)庫執(zhí)行計(jì)劃,表示如下::const::ref:::::range:index:all:具體含義可去MYSQL的官方網(wǎng)站查詢(5):指出MySQL能使用哪個(gè)索引在表中找到行,查詢涉及到的字段上若存在索引,則該索引將被列出mysql數(shù)據(jù)庫執(zhí)行計(jì)劃,但不一定被查詢使用(6)key:執(zhí)行SQL真正用到的索引,如果沒有使用索引,即為null(7):索引字段長(zhǎng)度(8)rows:掃描行數(shù)(9)Extra:執(zhí)行情況描述說明個(gè)人覺得執(zhí)行計(jì)劃最大一點(diǎn)好處就是用來評(píng)測(cè)SQL是否走索引。如果沒有走,可以分析原因。索引是用空間換時(shí)間,如果沒有走索引,就白白浪費(fèi)數(shù)據(jù)庫寶貴的空間,更重要的是使SQL執(zhí)行低下關(guān)于type描述,可參看附件,附件是在學(xué)習(xí)sql執(zhí)行計(jì)劃時(shí),搜到的一個(gè)很不錯(cuò)的PPT。在此感謝作者的分享。