這個和eq_ref究竟有何區(qū)別?
以下全部詳細(xì)解析explain各個屬性含義:
????
????各屬性含義:
????id: 查詢的序列號
????select_type: 查詢的類型,主要是區(qū)別普通查詢和聯(lián)合查詢、子查詢之類的復(fù)雜查詢
SIMPLE
:查詢中不包含子查詢或者UNION
PRIMARY
SELECT
或WHERE
列表中包含了子查詢,該子查詢被標(biāo)記為:SUBQUERY
????table: 輸出的行所引用的表
????type: 訪問類型
????
????從左至右,性能由差到好
eq_ref和const的區(qū)別:
)
eq_ref:唯一性索引掃描,對于每個索引鍵,表中只有一條記錄與之匹配。常見于主鍵或唯一索引掃描
const, system: 單表中最多有一個匹配行,查詢起來非常迅速,例如根據(jù)主鍵或唯一索引查詢。system是const類型的特例,當(dāng)查詢的表只有一行的情況下, 使用system。
select 1 from test where 1
????possible_keys: 表示查詢時可能使用的索引。如果是空的,沒有相關(guān)的索引。這時要提高性能,可通過檢驗WHERE子句,看是否引用某些字段,或者檢查字段不是適合索引
????key: 顯示MySQL實際決定使用的索引。如果沒有索引被選擇,是NULL
????key_len: 使用到索引字段的長度
????注:key_len顯示的值為索引字段的最大可能長度,并非實際使用長度,即key_len是根據(jù)表定義計算而得,不是通過表內(nèi)檢索出的。
????ref: 顯示哪個字段或常數(shù)與key一起被使用
????rows: 這個數(shù)表示mysql要遍歷多少數(shù)據(jù)才能找到,表示MySQL根據(jù)表統(tǒng)計信息及索引選用情況,估算的找到所需的記錄所需要讀取的行數(shù),在innodb上可能是不準(zhǔn)確的
????Extra: 執(zhí)行情況的說明和描述。包含不適合在其他列中顯示但十分重要的額外信息。
簡單地說是const
是直接按主鍵或唯一鍵讀取,eq_ref
用于聯(lián)表查詢的情況,按聯(lián)表的主鍵或唯一鍵聯(lián)合查詢。
下面的內(nèi)容翻譯自官方方檔:
const
該表最多有一個匹配行, 在查詢開始時讀取。由于只有一行, 因此該行中列的值可以被優(yōu)化器的其余部分視為常量。const 表非??? 因為它們只讀一次。
const用于將 "主鍵" 或 "唯一" 索引的所有部分與常量值進(jìn)行比較。在下面的查詢中, tbl_name 可以用作 const 表:
SELECT * FROM tbl_name WHERE primary_key=1;
SELECT * FROM tbl_name
WHERE primary_key_part1=1 AND primary_key_part2=2;
eq_ref
讀取本表中和關(guān)聯(lián)表表中的每行組合成的一行。除 了 system 和 const 類型之外, 這是最好的聯(lián)接類型。當(dāng)連接使用索引的所有部分時, 索引是主鍵或唯一非 NULL 索引時, 將使用該值。
eq_ref 可用于使用 =
運算符比較的索引列。比較值可以是常量或使用此表之前讀取的表中的列的表達(dá)式。在下面的示例中, MySQL 可以使用 eq_ref 連接(join)ref_table來處理:
SELECT * FROM ref_table,other_table
WHERE ref_table.key_column=other_table.column;
SELECT * FROM ref_table,other_table
WHERE ref_table.key_column_part1=other_table.column
AND ref_table.key_column_part2=1;
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。