type | 說明 |
---|---|
SYSTEM | 系統(tǒng),表僅有一行(=系統(tǒng)表)。這是const聯(lián)接類型的一個(gè)特例 |
CONST | 常量,表最多有一個(gè)匹配行,因?yàn)閮H有一行,在這行的列值可被優(yōu)化器剩余部分認(rèn)為是常數(shù),const表很快,因?yàn)樗鼈冎蛔x取一次 |
EQ_REF | 搜索時(shí)使用primary key 或 unique類型 |
REF | 根據(jù)索引查找一個(gè)或多個(gè)值 |
INDEX_MERGE | 合并索引,使用多個(gè)單列索引搜索 |
RANGE | 對(duì)索引列進(jìn)行范圍查找 |
index | 全索引表掃描 |
ALL | 全數(shù)據(jù)表掃描 |
根據(jù)表格可以明顯看出,其中const是常量查找,而RANGE是對(duì)索引列進(jìn)行范圍查找,所以性能也就很明顯的體現(xiàn)了出來。
那使用like查詢時(shí),Extra字段代表什么呢?Extra字段中的Using where,又代表什么?
Extra字段
1,Extra字段是Explain輸出中也很重要的列,所代表著MySQL查詢優(yōu)化器執(zhí)行查詢的過程中對(duì)查詢計(jì)劃的重要補(bǔ)充信息。
2,Extra字段中的Using where意味著mysql服務(wù)器將在存儲(chǔ)引擎檢索行后再進(jìn)行過濾。所以比起使用使用'='又多了一步查找過程。
顯然通過以上的總結(jié)我們可以得出結(jié)論:當(dāng)我們使用索引字段進(jìn)行條件查詢時(shí),'='的性能要比like快。
是不是以為到這里就結(jié)束了呢?
然而并沒有
有的小伙伴該問了那非索引字段呢?
對(duì)的,我們下面繼續(xù)測(cè)試非索引字段
EXPLAIN SELECT * FROM crms_customer WHERE customer_name = '張飛'; ----------------------------------- EXPLAIN SELECT * FROM crms_customer WHERE customer_name LIKE '張飛';
除了"="和like同樣的兩條語(yǔ)句,讓我們運(yùn)行一下:
"=":
like:
可以看出當(dāng)非索引字段時(shí)like和"="是一樣的,性能上也沒有差別。
(當(dāng)然,explain中還有很多其他字段,后續(xù)我會(huì)一一給小伙伴們講解的。)
結(jié)論
經(jīng)過我們的不懈努力,可以得到結(jié)論:當(dāng)like和"="在使用非索引字段查詢時(shí),他們的性能是一樣的;而在使用索引字段時(shí),由于"="是直接命中索引的,只讀取一次,而like需要進(jìn)行范圍查詢,所以"="要比like性能好一些。~~~~
到此這篇關(guān)于mysql優(yōu)化之like和=性能的文章就介紹到這了,更多相關(guān)mysql like和=性能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:阜新 鷹潭 合肥 鎮(zhèn)江 臺(tái)灣 貴州 日照 北京
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql優(yōu)化之like和=性能詳析》,本文關(guān)鍵詞 mysql,優(yōu)化,之,like,和,性能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。