1. 索引是什么?
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分),它們包含著對數(shù)據(jù)表里所有記錄的引用指針。
索引是一種數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)庫索引,是數(shù)據(jù)庫管理系統(tǒng)中一個排序的數(shù)據(jù)結(jié)構(gòu),以協(xié)助快速查詢、更新數(shù)據(jù)庫表中數(shù)據(jù)。索引的實現(xiàn)通常使用B樹及其變種B+樹。更通俗的說,索引就相當于目錄。為了方便查找書中的內(nèi)容,通過對內(nèi)容建立索引形成目錄。而且索引是一個文件,它是要占據(jù)物理空間的。
MySQL索引的建立對于MySQL的高效運行是很重要的,索引可以大大提高MySQL的檢索速度。比如我們在查字典的時候,前面都有檢索的拼音和偏旁、筆畫等,然后找到對應(yīng)字典頁碼,這樣然后就打開字典的頁數(shù)就可以知道我們要搜索的某一個key的全部值的信息了。
2. 索引有哪些優(yōu)缺點?
索引的優(yōu)點
可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。
通過使用索引,可以在查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。
索引的缺點
時間方面:創(chuàng)建索引和維護索引要耗費時間,具體地,當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,會降低增/改/刪的執(zhí)行效率;
空間方面:索引需要占物理空間。
3. MySQL有哪幾種索引類型?
1、從存儲結(jié)構(gòu)上來劃分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。這里所描述的是索引存儲時保存的形式,
2、從應(yīng)用層次來分:普通索引,唯一索引,復(fù)合索引。
普通索引:即一個索引只包含單個列,一個表可以有多個單列索引
唯一索引:索引列的值必須唯一,但允許有空值
復(fù)合索引:多列值組成一個索引,專門用于組合搜索,其效率大于索引合并
聚簇索引(聚集索引):并不是一種單獨的索引類型,而是一種數(shù)據(jù)存儲方式。具體細節(jié)取決于不同的實現(xiàn),InnoDB的聚簇索引其實就是在同一個結(jié)構(gòu)中保存了B-Tree索引(技術(shù)上來說是B+Tree)和數(shù)據(jù)行。
非聚簇索引:不是聚簇索引,就是非聚簇索引
3、根據(jù)中數(shù)據(jù)的物理順序與鍵值的邏輯(索引)順序關(guān)系:聚集索引,非聚集索引。
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3816瀏覽量
64457 -
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
40147 -
MySQL
+關(guān)注
關(guān)注
1文章
816瀏覽量
26609 -
索引
+關(guān)注
關(guān)注
0文章
59瀏覽量
10482
發(fā)布評論請先 登錄
相關(guān)推薦
評論