索引類型:
1.按照數(shù)據(jù)結構角度:B+樹索引,哈希索引荷鼠,F(xiàn)ULLTEXT索引
1)B+樹索引:
B+的特性:1.所有關鍵字都出現(xiàn)在葉子結點的鏈表中(稠密索引)何吝,且鏈表中的關鍵字恰好是有序的宏怔;2.不可能在非葉子結點命中;3.非葉子結點相當于是葉子結點的索引(稀疏索引)阔蛉,葉子結點相當于是存儲(關鍵字)數(shù)據(jù)的數(shù)據(jù)層弃舒;
2)哈希索引:
哈希索引就是采用一定的哈希算法,把鍵值換算成新的哈希值状原,檢索時不需要類似B+樹那樣從根節(jié)點到葉子節(jié)點逐級查找棒坏,只需一次哈希算法即可立刻定位到相應的位置,速度非吃馑瘢快坝冕。沒辦法利用索引完成排序,以及l(fā)ike ‘xxx%’ 這樣的部分模糊查詢(這種部分模糊查詢瓦呼,其實本質(zhì)上也是范圍查詢)喂窟。也不支持多列聯(lián)合索引的最左匹配規(guī)則。
3)FULLTEXT索引:
InnoDB引擎對FULLTEXT索引的支持是MySQL5.6新引入的特性央串,之前只有MyISAM引擎支持FULLTEXT索引磨澡。對于FULLTEXT索引的內(nèi)容可以使用MATCH()…AGAINST語法進行查詢。FULLTEXT索引只能由CHAR质和、VARCHAR和TEXT這幾種類型的數(shù)據(jù)列構成稳摄。
全文搜索將忽略"常見的"單詞,而"常見"在這里的含義是"至少在一半的數(shù)據(jù)行里出現(xiàn)過"饲宿。千萬不要忘記這個特點厦酬,尤其是在你準備對數(shù)據(jù)表進行全文搜索測試時。你至少要在測試數(shù)據(jù)表里插入3個數(shù)據(jù)行瘫想。如果那個數(shù)據(jù)表只有一個或兩個數(shù)據(jù)行仗阅,它里面的每個單詞將至少有50%的出現(xiàn)幾率,所以對它進行全文搜索將不會有任何結果国夜。
2.按照物理存儲角度:聚集索引减噪,非聚集索引(索引覆蓋)
1)聚集索引:
聚集索引確定表中數(shù)據(jù)的物理順序。聚集索引類似于電話簿,后者按姓氏排列數(shù)據(jù)筹裕。由于聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲順序醋闭,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引)朝卒,就像電話簿按姓氏和名字進行組織一樣目尖。
2)非聚集索引:
非聚集索引中的項目按索引鍵值的順序存儲,而表中的信息按另一種順序存儲(這可以由聚集索引規(guī)定)扎运。對于非聚集索引瑟曲,可以為在表非聚集索引中查找數(shù)據(jù)時常用的每個列創(chuàng)建一個非聚集索引。有些書籍包含多個索引豪治。例如洞拨,一本介紹園藝的書可能會包含一個植物通俗名稱索引,和一個植物學名索引负拟,因為這是讀者查找信息的兩種最常用的方法烦衣。
3.從邏輯角度可分為主鍵索引、普通索引掩浙,單列索引花吟、多列索引、唯一索引厨姚、非唯一索引
1)主鍵索引:
主鍵索引是唯一索引的特殊類型衅澈。
數(shù)據(jù)庫表通常有一列或列組合,其值用來唯一標識表中的每一行谬墙。該列稱為表的主鍵今布。
在數(shù)據(jù)庫關系圖中為表定義一個主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型拭抬。主鍵索引要求主鍵中的每個值是唯一的部默。當在查詢中使用主鍵索引時,它還允許快速訪問數(shù)據(jù)造虎。
2)唯一索引:
唯一索引不允許兩行具有相同的索引值傅蹂。
如果現(xiàn)有數(shù)據(jù)中存在重復的鍵值,則大多數(shù)數(shù)據(jù)庫都不允許將新創(chuàng)建的唯一索引與表一起保存算凿。當新數(shù)據(jù)將使表中的鍵值重復時份蝴,數(shù)據(jù)庫也拒絕接受此數(shù)據(jù)。
3)非唯一索引:
非唯一索引允許兩行具有相同的索引值澎媒。
4)單列索引:
單列索引就是常用的一個列字段的索引搞乏,常見的索引。
5)多列索引:
多列索引就是含有多個列字段的索引戒努。
總結:多列索引只有在where條件中含有索引中的首列字段時才有效。
6)普通索引:
這是最基本的索引類型,而且它沒有唯一性之類的限制储玫。
大家喜歡可以訪問我的個人網(wǎng)站:http://www.yingminxing.com
如有疑問侍筛,歡迎溝通交流:QQ:370399195, 微信:yingminxing1988