MySQL 索引優(yōu)化

1.索引分析

單表索引

where后面的查詢字段card已經(jīng)添加了索引idx_class_card

image-20200511032558409

兩表索引

left join 左表全都有,右表關(guān)聯(lián)字段添加索引

right join 右表全都要有要出,左表關(guān)聯(lián)字段添加索引

image-20200511033130132

三表索引

索引要設(shè)置在經(jīng)常查詢的字段上

image-20200511034256489

2.索引失效

test03表作為測試表

image-20200511035520836
  1. 全值匹配我最愛

    where后面的查詢字段與復(fù)合索引一一匹配上捷兰,c1,c2,c3,c4和復(fù)合索引idx_test03_c1234

    image-20200511035725036
  2. 最佳左前綴法則

    復(fù)合索引的第一個字段一定不能丟失,否則索引失效

    c1是復(fù)合索引第一個字段,沒有它,type從ref變?yōu)锳LL,idx_test03_c1234索引失效

    image-20200511040402161
  3. 不在索引列上做任何操作(計算固阁、函數(shù)壤躲、(自動or手動)類型轉(zhuǎn)換),會導(dǎo)致索引失效而轉(zhuǎn)向全表掃描

    where后面的索引列c1使用了left函數(shù)后,idx_test03_c1234索引失效,type從ref變?yōu)锳LL

    image-20200511040936570
  4. 存儲引擎不能使用索引中范圍條件右邊的列

    where后面c2>'a2'使用了>,type從ref變?yōu)閞ange,從key_len可以看出只有c1,c2有效,c3無效,范圍之后索引無效

    image-20200511041256367
  5. 盡量使用覆蓋索引(只訪問索引的查詢(索引列和查詢列一致))备燃,減少select*

    select * 的Extra為NULL,而使用具體字段名的Extra則為Using index,使用了覆蓋索引(Covering Index)

    覆蓋索引是select的數(shù)據(jù)列只用從索引中就能夠取得碉克,不必讀取數(shù)據(jù)行,換句話說查詢列要被所建的索引覆蓋并齐。

    image-20200511041736322
  6. mysql在使用不等于(漏麦!=或者<>)的時候無法使用索引會導(dǎo)致全表掃描

    where后面查詢字段c2使用了!=或者<>,type從ref變?yōu)锳LL,key變?yōu)镹ULL,索引失效

    image-20200511042345614
  7. is null,is not null 也無法使用索引

  1. like以通配符開頭('$abc...')mysql索引失效會變成全表掃描操作

    where后面的c1使用%1%,type從ref變成ALL,

    c2使用%2%,只有c1索引有效,c2及之后的索引統(tǒng)統(tǒng)失效

    如果把%放后面,索引有效,type從ref變成range

    image-20200511043216418
  2. 字符串不加單引號索引失效

    where之后c1='1',使用varchar類型,使用了索引

    c1=1,mysql優(yōu)化器會自動根據(jù)字段類型(varchar)轉(zhuǎn)為'1',然后進(jìn)行查找,自動轉(zhuǎn)換使索引失效

    image-20200511043704818
  3. 少用or,用它連接時會索引失效

    where后面c1='a1' or c2='a2',查詢條件使用or連接,type從ref變成ALL,key變?yōu)镹ULL,索引失效

    image-20200511044003254

3.總結(jié)

全值匹配我最愛,最左前綴要遵守;

帶頭大哥不能死,中間兄弟不能斷;

索引列上少計算,范圍之后全失效;

LIKE百分寫最右,覆蓋索引不寫星;

不等空值還有or,索引失效要少用;

VAR引號不可丟,SQL高級也不難.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兽赁,一起剝皮案震驚了整個濱河市擂达,隨后出現(xiàn)的幾起案子强胰,更是在濱河造成了極大的恐慌缓呛,老刑警劉巖蜡娶,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坟奥,死亡現(xiàn)場離奇詭異免都,居然都是意外死亡驯妄,警方通過查閱死者的電腦和手機(jī)食侮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門号涯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锯七,你說我怎么就攤上這事链快。” “怎么了起胰?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵久又,是天一觀的道長巫延。 經(jīng)常有香客問我,道長地消,這世上最難降的妖魔是什么炉峰? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮脉执,結(jié)果婚禮上疼阔,老公的妹妹穿的比我還像新娘。我一直安慰自己半夷,他們只是感情好婆廊,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巫橄,像睡著了一般淘邻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上湘换,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天宾舅,我揣著相機(jī)與錄音,去河邊找鬼彩倚。 笑死筹我,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帆离。 我是一名探鬼主播蔬蕊,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哥谷!你這毒婦竟也來了岸夯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤们妥,失蹤者是張志新(化名)和其女友劉穎囱修,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體王悍,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡破镰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了压储。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲜漩。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖集惋,靈堂內(nèi)的尸體忽然破棺而出孕似,到底是詐尸還是另有隱情,我是刑警寧澤刮刑,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布喉祭,位于F島的核電站养渴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泛烙。R本人自食惡果不足惜理卑,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔽氨。 院中可真熱鬧藐唠,春花似錦、人聲如沸鹉究。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽自赔。三九已至妈嘹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绍妨,已是汗流浹背蟋滴。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留痘绎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓肖粮,卻偏偏與公主長得像孤页,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涩馆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359