亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 41104 | 回復(fù): 0
打印 上一主題 下一主題

MySQL的EXPLAIN命令用法 explain顯示了mysql如何處理select語(yǔ)句以及連接表。可以幫助 [復(fù)制鏈接]

論壇徽章:
3
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-06-25 22:20:00數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-08-06 06:20:00數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-08-28 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-07-17 17:18 |只看該作者 |倒序?yàn)g覽
MySQL的EXPLAIN命令用法
explain顯示了mysql如何處理select語(yǔ)句以及連接表。可以幫助選擇更好的索引和寫(xiě)出更優(yōu)化的查詢語(yǔ)句。
先解析一條sql語(yǔ)句,看出現(xiàn)什么內(nèi)容

好,接下來(lái)咱們就看看出現(xiàn)的這幾行所代表的含義!
1、id
SELECT識(shí)別符,這是SELECT查詢序列號(hào)。這個(gè)不重要,查詢序號(hào)即為sql語(yǔ)句執(zhí)行的順序

2、select_type
select類(lèi)型,它有以下幾種值:
simple:它表示簡(jiǎn)單的select,沒(méi)有union和子查詢
primary:最外面的select,在有子查詢的語(yǔ)句中,最外面的select查詢就是primary
union:union語(yǔ)句的第二個(gè)及以后的子查詢
dependent union:UNION中的第二個(gè)及以后的子查詢語(yǔ)句,取決于外面的查詢
union result:UNION的結(jié)果
subquery:子查詢中的第一個(gè)select語(yǔ)句
dependent subquery:依賴于外查詢的子查詢中的第一個(gè)select
derived:子查詢衍生出來(lái)的表
materialized:物化子查詢
uncacheable subquery:不能被緩存,需要重新評(píng)估的子查詢
uncacheable union:union中第二個(gè)及以上的uncacheable subquery中需要重新評(píng)估的子查詢

3、table
輸出的行所用的表

4、type
連接類(lèi)型
system:表僅有一行,這是const類(lèi)型的特列,平時(shí)不會(huì)出現(xiàn),這個(gè)也可以忽略不計(jì)
const:表最多有一個(gè)匹配行,const用于比較primary key 或者unique索引。因?yàn)橹黄ヅ湟恍袛?shù)據(jù),所以很快。記住一定是用到primary key或者unique,并且只檢索出兩條數(shù)據(jù)的情況下才會(huì)是const
eq_ref:對(duì)于每個(gè)來(lái)自于前面的表的行組合,從該表中讀取一行。這可能是最好的聯(lián)接類(lèi)型,除了const類(lèi)型。它用在一個(gè)索引的所有部分被聯(lián)接使用并且索引是UNIQUE或PRIMARY KEY"。eq_ref可以用于使用=比較帶索引的列。
ref:對(duì)于每個(gè)來(lái)自于前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。如果聯(lián)接只使用鍵的最左邊的前綴,或如果鍵不是UNIQUE或PRIMARY KEY(換句話說(shuō),如果聯(lián)接不能基于關(guān)鍵字選擇單個(gè)行的話),則使用ref。如果使用的鍵僅僅匹配少量行,該聯(lián)接類(lèi)型是不錯(cuò)的。
fulltext:使用全文索引
ref_or_null:該聯(lián)接類(lèi)型如同ref,但是添加了MySQL可以專(zhuān)門(mén)搜索包含NULL值的行。在解決子查詢中經(jīng)常使用該聯(lián)接類(lèi)型的優(yōu)化。
index_merge:該聯(lián)接類(lèi)型表示使用了索引合并優(yōu)化方法。在這種情況下,key列包含了使用的索引的清單,key_len包含了使用的索引的最長(zhǎng)的關(guān)鍵元素。
unique_subquery:在帶有in的子句中用來(lái)代替ref
index_subquery:類(lèi)似于unique_subquery,查詢條件
range:給定范圍內(nèi)的檢索,使用一個(gè)索引來(lái)檢查行,用到=、<>、>、<、>=、<=、is null、<=>、between、in
ALL:對(duì)于每個(gè)來(lái)自于先前的表的行組合,進(jìn)行完整的表掃描。如果表是第一個(gè)沒(méi)標(biāo)記const的表,這通常不好,并且通常在它情況下很差。通?梢栽黾痈嗟乃饕灰褂肁LL,使得行能基于前面的表中的常數(shù)值或列值被檢索出。
index:該聯(lián)接類(lèi)型與ALL相同,除了只有索引樹(shù)被掃描。這通常比ALL快,因?yàn)樗饕募ǔ1葦?shù)據(jù)文件小。(也就是說(shuō)雖然all和Index都是讀全表,但index是從索引中讀取的,而all是從硬盤(pán)中讀的)

5、possible_keys
提示使用哪個(gè)索引會(huì)在該表中找到行

6、keys
查詢實(shí)際用到的索引

7、key_len
實(shí)際用到的索引長(zhǎng)度

8、ref
ref列顯示使用哪個(gè)列或常數(shù)與key一起從表中選擇行。

9、rows
顯示執(zhí)行查詢的行數(shù),,數(shù)值越大越不好,說(shuō)明沒(méi)有用好索引

10、Extra
查詢語(yǔ)句的額外信息

我們?cè)偈褂胑xplain查看SQL執(zhí)行計(jì)劃是,要著重注意以下幾點(diǎn):
1、type
如果類(lèi)型是all,則表示走的全表掃描,這個(gè)代價(jià)很大,建議創(chuàng)建適當(dāng)?shù)乃饕蛘呤褂脦в兴饕淖侄巫鳛椴樵儣l件
此外,全索引掃描(full index scan)的代價(jià)有時(shí)候是比全表掃描還要高的,除非是基于InnoDB表的主鍵索引掃描。

2、Extra
Using temporary,表示需要?jiǎng)?chuàng)建臨時(shí)表,通常是因?yàn)镚ROUP BY的列沒(méi)有索引,或者GROUP BY和ORDER BY的列不一樣,也需要?jiǎng)?chuàng)建臨時(shí)表,建議添加適當(dāng)?shù)乃饕?br /> Using filesort,表示無(wú)法利用索引完成排序,也有可能是因?yàn)槎啾磉B接時(shí),排序字段不是驅(qū)動(dòng)表中的字段,因此也沒(méi)辦法利用索引完成排序,建議添加適當(dāng)?shù)乃饕?br /> Using where,通常是因?yàn)槿頀呙杌蛉饕龗呙钑r(shí)(type 列顯示為 ALL 或 index),又加上了WHERE條件,建議添加適當(dāng)?shù)乃饕?br />
更多MySQL學(xué)習(xí),敬請(qǐng)期待:
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP