MySQL索引簡介

索引是什么嗓违?

MySQL官方對索引的定義為:索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu);
索引是提高查詢速度的最重要的工具社证,雖然還有一些其他技術(shù)能提升性能警医,但一般來說引起最大性能差異的,都是索引的正確使用典徘,所以應(yīng)該首先從索引的角度來提升性能蟀苛;

MySQL索引類型

普通索引(INDEX),最基本的索引逮诲,沒有任何限制帜平;
唯一索引(UNIQUE)幽告,值必須是唯一,但允許空裆甩;
主鍵索引(PRIMARY KEY)冗锁,是一種特殊的唯一索引,不允許有空值嗤栓;
全文索引(FULLTEXT)冻河,僅可用于MyISAM,檢索文本信息用抛腕,針對較大的數(shù)據(jù)芋绸,生成時耗時耗空間;
單列索引:一個索引只包含一個列担敌,注意摔敛,多個單列索引之間沒有任何關(guān)系;
多列索引(組合索引):一個索引包含多各列全封,尤其需要注意的是創(chuàng)建組合索引時各列的順序马昙;

MySQL索引方法——BTree

BTree索引:MySQL數(shù)據(jù)庫中使用最頻繁的索引類型,基本所有存儲引擎都支持BTree索引刹悴,下圖分別是MyISAM和InnoDB存儲引擎的BTree索引行楞。

11.jpg

22.jpg

MySQL索引方法——Hash

Hash索引:主要通過Hash算法(常見的Hash算法有直接定址法、平方取中法土匀、折疊法子房、除數(shù)取余法、隨機(jī)數(shù)法)就轧,將數(shù)據(jù)庫字段數(shù)據(jù)轉(zhuǎn)換成定長的Hash值证杭,與這條數(shù)據(jù)的行指針一并存入Hash表的對應(yīng)位置;如果發(fā)生Hash碰撞(兩個不同關(guān)鍵字的Hash值相同)妒御,則在對應(yīng)Hash鍵下以鏈表形式存儲解愤。
檢索算法:在檢索查詢時,就再次對待查關(guān)鍵字再次執(zhí)行相同的Hash算法乎莉,得到Hash值送讲,到對應(yīng)Hash表對應(yīng)位置取出數(shù)據(jù)即可,如果發(fā)生Hash碰撞惋啃,則需要在取值時進(jìn)行篩選哼鬓。目前使用Hash索引的數(shù)據(jù)庫并不多,主要有Memory等肥橙。
一般來說魄宏,索引的檢索效率非常高,可以一次定位存筏,不像B-Tree索引需要進(jìn)行從根節(jié)點到葉節(jié)點的多次IO操作宠互。有利必有弊,Hash算法在索引的應(yīng)用也有很多弊端椭坚,例如:
a予跌、Hash索引僅僅能滿足等值的查詢,范圍查詢不保證結(jié)果正確善茎。因為數(shù)據(jù)在經(jīng)過Hash算法后券册,其大小關(guān)系就可能發(fā)生變化。
b垂涯、Hash索引不能被排序烁焙。同樣是因為數(shù)據(jù)經(jīng)過Hash算法后,大小關(guān)系就可能發(fā)生變化耕赘,排序是沒有意義的骄蝇。
c、Hash索引不能避免表數(shù)據(jù)的掃描操骡。因為發(fā)生Hash碰撞時九火,僅僅比較Hash值是不夠的,需要比較實際的值以判定是否符合要求册招。
d岔激、Hash索引在發(fā)生大量Hash值相同的情況時性能不一定比B-Tree索引高。因為碰撞情況會導(dǎo)致多次的表數(shù)據(jù)的掃描是掰,造成整體性能的低下虑鼎,可以通過采用合適的Hash算法一定程度解決這個問題。
e键痛、Hash索引不能使用部分索引鍵查詢炫彩。因為當(dāng)使用組合索引情況時,是把多個數(shù)據(jù)庫列數(shù)據(jù)合并后再計算Hash值散休,所以對單獨列數(shù)據(jù)計算Hash值是沒有意義的媒楼。

索引的優(yōu)缺點

索引的優(yōu)點是可以提高檢索數(shù)據(jù)的速度,這是創(chuàng)建索引的最主要的原因戚丸;對于有依賴關(guān)系的子表和父表之間的聯(lián)合查詢時划址,可以顯著提高查詢速度;使用分組和排序子句進(jìn)行數(shù)據(jù)查詢時限府,同樣可以顯著節(jié)省查詢中分組和排序的時間夺颤。
索引的缺點是創(chuàng)建和維護(hù)索引需要耗費時間,耗費時間的數(shù)量隨著數(shù)據(jù)量的增加而增加胁勺;每一個索引要占一定的物理空間世澜;增加、刪除和修改數(shù)據(jù)時署穗,要動態(tài)的維護(hù)索引寥裂,造成數(shù)據(jù)的維護(hù)速度降低了嵌洼。

各種索引的適用場景

索引的本質(zhì):以空間換時間,以插入更新速度降低換取查詢檢索速度的提升封恰。
主鍵索引/唯一索引:以更快的速度精準(zhǔn)的定位到某條數(shù)數(shù)據(jù)麻养,適用于絕大多數(shù)需要更新和查詢的表(只會插入數(shù)據(jù)的表除外),絕對用不到范圍查詢的可以使用Hash索引诺舔;
普通索引/組合索引:表的關(guān)聯(lián)鳖昌、查詢,適用于查詢需求較多的表低飒,對經(jīng)常插入和更新的表要適當(dāng)降低組合索引的使用许昨;
全文索引:全文檢索使用,但如果有的選擇褥赊,盡量不用數(shù)據(jù)庫自己的全文索引糕档。
Hash索引:主鍵,MD5碼等需要唯一確定一條數(shù)據(jù)的等值查詢崭倘,需要范圍查詢的不能使用Hash索引翼岁;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市司光,隨后出現(xiàn)的幾起案子琅坡,更是在濱河造成了極大的恐慌,老刑警劉巖残家,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榆俺,死亡現(xiàn)場離奇詭異,居然都是意外死亡坞淮,警方通過查閱死者的電腦和手機(jī)茴晋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來回窘,“玉大人诺擅,你說我怎么就攤上這事》戎保” “怎么了烁涌?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長酒觅。 經(jīng)常有香客問我撮执,道長,這世上最難降的妖魔是什么舷丹? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任抒钱,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谋币。我一直安慰自己仗扬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布瑞信。 她就那樣靜靜地躺著厉颤,像睡著了一般穴豫。 火紅的嫁衣襯著肌膚如雪凡简。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天精肃,我揣著相機(jī)與錄音秤涩,去河邊找鬼。 笑死司抱,一個胖子當(dāng)著我的面吹牛筐眷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播习柠,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼匀谣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了资溃?” 一聲冷哼從身側(cè)響起武翎,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溶锭,沒想到半個月后宝恶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡趴捅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年垫毙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拱绑。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡综芥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猎拨,到底是詐尸還是另有隱情膀藐,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布迟几,位于F島的核電站消请,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏类腮。R本人自食惡果不足惜臊泰,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚜枢。 院中可真熱鬧缸逃,春花似錦针饥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至昭殉,卻和暖如春苞七,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挪丢。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工蹂风, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乾蓬。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓惠啄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親任内。 傳聞我的和親對象是個殘疾皇子撵渡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345