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