MySQL索引的嘗試

關(guān)于MySQL索引的命中問題统舀,做了一點測試觅够。

首先态蒂,關(guān)于索引無法命中的問題堰汉,查了不少資料辽社,大概是這么說的:

- 在使用LIKE關(guān)鍵字進行查詢的查詢

? ? 如果匹配字符串的第一個字符為“%”,索引不起作用翘鸭。只有“%”不在第一個位置滴铅,索引才會生效。

- 使用OR關(guān)鍵字的查詢

? ? 查詢語句的查詢條件中只有OR關(guān)鍵字就乓,且OR前后的兩個條件中的列都是索引時汉匙,索引才會生效,否則生蚁,索引不生效噩翠。

- 使用聯(lián)合索引的查詢

? ? 只有查詢條件中使用了這些字段中第一個字段時,索引才會生效邦投。

我寫了兩百來萬數(shù)據(jù)伤锚,測試了一下。

首先是LIKE查詢志衣,id是主鍵屯援,t_password建了索引猛们,

? ? - 當(dāng)前面沒有"%",rows是1325119條(password_school是我建的t_password和t_school的聯(lián)合索引玄呛,后面會用到)阅懦;

EXPLAIN
執(zhí)行時間

- 前面有"%"時,rows是2690239,可是看到此時possible_keys是null,看起來確實是全表掃描了徘铝,但是key是有值的(password是我建的t_password的索引名字)耳胎;

EXPLAIN
執(zhí)行時間

可以看出,執(zhí)行時間慢了不少惕它。

那么假設(shè)是沒有索引的字段呢怕午?


EXPLAIN


執(zhí)行時間

可以看到,執(zhí)行時間比有索引的的模糊搜索慢了很多淹魄。

既然前面加"%"無法命中索引郁惜,為什么執(zhí)行速度卻還是比沒有索引的字段快這么多呢?

- 從EXPLAIN里面可以看到甲锡,當(dāng)前面不加"%"兆蕉,rows是1325119;而前面加了"%"時缤沦,rows是2690239虎韵,也就是表的總行數(shù),沒有索引的字段pic_url也是2690239缸废,但是這兩者速度差了好幾倍包蓝。

我的想法:LIKE查詢有索引的字段,關(guān)鍵字前面沒有"%"時企量,是可以準確命中索引测萎,直接查符合條件的行;而關(guān)鍵字前面有"%"時届巩,無法命中索引硅瞧,但是執(zhí)行時也是全索引搜索,而不是全表搜索姆泻,執(zhí)行速度比不加索引還是快了很多的零酪。

關(guān)于聯(lián)合索引其實也是一樣的,如果只給出了第一個條件拇勃,是能準確命中索引的四苇;而如果沒有給出第一個條件,只給出第二個方咆,無法準確命中索引月腋,但是也是全索引掃描,速度其實也比較快(當(dāng)然不如準確命中索引,數(shù)據(jù)量越大就越明顯)榆骚,圖就不上了片拍,有興趣的可以自己試一試。

我的結(jié)論:廣為流傳的幾個索引失效的問題妓肢,其實并不是索引失效捌省,只是索引不能準確命中,速度會相對慢一點碉钠,但也遠快于沒有索引的字段纲缓。

剛了解索引的時候就在想,MySQL怎么這么笨呢喊废,動不動就不能命中索引祝高。其實并沒有那么笨。

ps:聯(lián)合索引的測試懶得貼了污筷,有興趣就自己試試唄工闺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瓣蛀,隨后出現(xiàn)的幾起案子陆蟆,更是在濱河造成了極大的恐慌,老刑警劉巖惋增,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遍搞,死亡現(xiàn)場離奇詭異,居然都是意外死亡器腋,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門钩杰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纫塌,“玉大人,你說我怎么就攤上這事讲弄〈胱螅” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵避除,是天一觀的道長怎披。 經(jīng)常有香客問我,道長瓶摆,這世上最難降的妖魔是什么凉逛? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮群井,結(jié)果婚禮上状飞,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好诬辈,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布酵使。 她就那樣靜靜地躺著,像睡著了一般焙糟。 火紅的嫁衣襯著肌膚如雪口渔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天穿撮,我揣著相機與錄音缺脉,去河邊找鬼。 笑死混巧,一個胖子當(dāng)著我的面吹牛枪向,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咧党,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼秘蛔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了傍衡?” 一聲冷哼從身側(cè)響起深员,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛙埂,沒想到半個月后倦畅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡绣的,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年叠赐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屡江。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡芭概,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惩嘉,到底是詐尸還是另有隱情罢洲,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布文黎,位于F島的核電站惹苗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耸峭。R本人自食惡果不足惜桩蓉,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劳闹。 院中可真熱鬧触机,春花似錦帚戳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔬胯,卻和暖如春对供,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氛濒。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工产场, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舞竿。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓京景,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骗奖。 傳聞我的和親對象是個殘疾皇子确徙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容