Mysql 索引

一瓤球、InnoDB的索引模型

InnoDB 使用了 B+ 樹索引模型,能夠很好地配合磁盤的讀寫特性敏弃,減少單次查詢的磁盤訪問次數卦羡,所以數據都是存儲在 B+ 樹中 的。每一個索引在 InnoDB 里面對應一棵 B+ 樹。什么是B+樹
主鍵索引:


普通索引:

主鍵索引的葉子節(jié)點存的是整行數據(這就是為何不能重建或者刪除主鍵索引绿饵,相當于重建表了)欠肾,普通索引的葉子節(jié)點存儲的是主鍵的值。在InnoDb中拟赊,主鍵索引也被成為聚合索引刺桃;普通索引被稱為二級索引

主鍵索引與普通索引查詢有什么區(qū)別:

從圖中可以看出,主鍵查詢直接通過Id直接可以查詢到葉子節(jié)點的數據吸祟;而普通索引查詢則先得到Id再通過主鍵索引樹搜索一次瑟慈,這個過程稱為回表。

二屋匕、為何要使用自增主鍵

自增主鍵是指自增列上定義的主鍵葛碧,在建表語句中一般是這么定義的: NOT NULL PRIMARY KEY AUTO_INCREMENT。
1炒瘟、性能方面(時間):
B+ 樹為了維護索引有序性吹埠,在插入新值的時候需要做必要的維護第步。需要邏輯上挪動后面的數據疮装,空出位置。而更糟的情況是粘都,需插入的所在的數據頁已經滿了廓推,根據 B+ 樹的算法,這時候需要申請一個新 的數據頁翩隧,然后挪動部分數據過去樊展。這個過程稱為頁分裂。在這種情況下堆生,性能自然會受影響专缠。
除了性能外,頁分裂操作還影響數據頁的利用率淑仆。原本放在一個頁的數據涝婉,現在分到兩個頁中, 整體空間利用率降低大約 50%蔗怠。
當然有分裂就有合并墩弯。當相鄰兩個頁由于刪除了數據,利用率很低之后寞射,會將數據頁做合并渔工。合
并的過程,可以認為是分裂過程的逆過程桥温。
2引矩、存儲方面(空間):
主鍵長度越小,普通索引的葉子節(jié)點就越小,普通索引占用的空間也就越小脓魏。如果身份證坐主鍵兰吟,則普通索引的所占的空間比較大
什么情況下可以業(yè)務字段做索引,只有這個一個字段為主鍵索引茂翔。

三混蔼、索引查詢

  • 最左前綴原則
    B+樹可以利用索引的“最左前綴”,來定位記錄珊燎。最左前綴可以是聯(lián)合索引的最左N個字段惭嚣,也可以是字符串索引的最左M個字符
    1、最左M個字符 如 like "a%"
    2悔政、聯(lián)合索引最左N個字段晚吞,盡可能的少維護索引。如有(a,b)則所以a谋国,ab條件的查詢都可以使用槽地;如需b查詢則需要考慮a索引和b索引的長度也就是使用空間
  • 覆蓋索引
    如果查詢條件使用的是普通索引(或是聯(lián)合索引的最左原則字段),查詢結果是聯(lián)合索引的字段或是主鍵芦瘾,不用回表操作捌蚊,直接返回結果,減少IO磁盤讀寫讀取正行數據近弟。如建立身份證號和姓名的聯(lián)合索引缅糟,則根據身份證號查詢姓名時不需要回表查詢
  • 索引下推
    市民表為例(name,age)聯(lián)合索引;
    select * from user where name like "a%" and age = 10;
    MySQL5.6版本之前祷愉,會對匹配的數據進行回表查詢窗宦;
    5.6版本后,根據聯(lián)合索引(覆蓋索引)可以獲取到age二鳄,直接過濾掉age!=10的記錄赴涵,再進行回表查詢,減少回表率订讼,提升檢索速度
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末髓窜,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子躯嫉,更是在濱河造成了極大的恐慌纱烘,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祈餐,死亡現場離奇詭異擂啥,居然都是意外死亡,警方通過查閱死者的電腦和手機帆阳,發(fā)現死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門哺壶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屋吨,“玉大人,你說我怎么就攤上這事。” “怎么了豌熄?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵浪慌,是天一觀的道長乘陪。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任直秆,我火速辦了婚禮,結果婚禮上鞭盟,老公的妹妹穿的比我還像新娘圾结。我一直安慰自己,他們只是感情好齿诉,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布筝野。 她就那樣靜靜地躺著,像睡著了一般粤剧。 火紅的嫁衣襯著肌膚如雪歇竟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天俊扳,我揣著相機與錄音途蒋,去河邊找鬼猛遍。 笑死馋记,一個胖子當著我的面吹牛,可吹牛的內容都是我干的懊烤。 我是一名探鬼主播梯醒,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腌紧!你這毒婦竟也來了茸习?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤壁肋,失蹤者是張志新(化名)和其女友劉穎号胚,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體浸遗,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡猫胁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了跛锌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弃秆。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出菠赚,到底是詐尸還是另有隱情脑豹,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布衡查,位于F島的核電站瘩欺,受9級特大地震影響,放射性物質發(fā)生泄漏拌牲。R本人自食惡果不足惜击碗,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望们拙。 院中可真熱鬧稍途,春花似錦、人聲如沸砚婆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽装盯。三九已至坷虑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埂奈,已是汗流浹背迄损。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留账磺,地道東北人芹敌。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像垮抗,于是被迫代替她去往敵國和親氏捞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • 索引 數據庫中的查詢操作非常普遍,索引就是提升查找速度的一種手段 索引的類型 從數據結構角度分 1.B+索引:傳統(tǒng)...
    一凡呀閱讀 2,920評論 0 8
  • 為何要有索引辞嗡? 說白了捆等,就是加速查詢。什么是索引续室? 索引在MySQL中也叫做“鍵”栋烤,是存儲引擎用于快速找到記錄的一...
    whenitsallover閱讀 633評論 0 0
  • 轉載:http://blog.codinglabs.org/articles/theory-of-mysql-in...
    qf1007閱讀 1,292評論 0 0
  • 《關于避孕套的陰謀論》 ----喻言 在杜蕾斯、杰士邦之后 日本岡本強勢崛起 三國鼎立猎贴,瓜分了 一班缎、二線城市的市場...
    喻言_35f4閱讀 971評論 0 3
  • 近期利好消息 公信銀行dapp正在研制中蝴光,2019年第一季度,將于交易所和公信寶深層次合作达址,具體等平臺公告蔑祟。 20...
    Berry_e16d閱讀 573評論 0 0