日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Mysql中聚簇索引和非聚簇索引的區(qū)別詳解

瀏覽:49日期:2023-06-28 19:41:17
目錄聚簇索引(聚集索引)聚簇索引的優(yōu)缺點(diǎn)輔助索引(非聚簇索引)InnoDB索引實(shí)現(xiàn)1)主鍵索引:2)InnoDB的輔助索引MyISAM索引實(shí)現(xiàn)1)主鍵索引:2)輔助索引(Secondary key)聚簇索引和非聚簇索引的區(qū)別聚簇索引(聚集索引)

聚簇索引并不是一種單獨(dú)的索引類型,而是一種數(shù)據(jù)存儲(chǔ)方式。具體細(xì)節(jié)依賴于其實(shí)現(xiàn)方式。

MySQL數(shù)據(jù)庫(kù)中innodb存儲(chǔ)引擎,B+樹(shù)索引可以分為聚簇索引(也稱聚集索引,clustered index)和輔助索引(有時(shí)也稱非聚簇索引或二級(jí)索引,secondary index,non-clustered index)。

這兩種索引內(nèi)部都是B+樹(shù),聚集索引的葉子節(jié)點(diǎn)存放著一整行的數(shù)據(jù)。

Innobd中的主鍵索引是一種聚簇索引,非聚簇索引都是輔助索引,像復(fù)合索引、前綴索引、唯一索引。

Innodb使用的是聚簇索引,MyISam使用的是非聚簇索引

聚簇索引就是按照每張表的主鍵構(gòu)造一顆B+樹(shù),同時(shí)葉子節(jié)點(diǎn)中存放的就是整張表的行記錄數(shù)據(jù),也將聚集索引的葉子節(jié)點(diǎn)稱為數(shù)據(jù)頁(yè)。這個(gè)特性決定了索引組織表中數(shù)據(jù)也是索引的一部分,每張表只能擁有一個(gè)聚簇索引。

Innodb通過(guò)主鍵聚集數(shù)據(jù),如果沒(méi)有定義主鍵,innodb會(huì)選擇非空的唯一索引代替。如果沒(méi)有這樣的索引,innodb會(huì)隱式的定義一個(gè)主鍵來(lái)作為聚簇索引。

聚簇索引的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

數(shù)據(jù)訪問(wèn)更快,因?yàn)榫鄞厮饕龑⑺饕蛿?shù)據(jù)保存在同一個(gè)B+樹(shù)中,因此從聚簇索引中獲取數(shù)據(jù)比非聚簇索引更快聚簇索引對(duì)于主鍵的排序查找和范圍查找速度非常快

缺點(diǎn):

插入速度嚴(yán)重依賴于插入順序,按照主鍵的順序插入是最快的方式,否則將會(huì)出現(xiàn)頁(yè)分裂,嚴(yán)重影響性能。因此,對(duì)于InnoDB表,我們一般都會(huì)定義一個(gè)自增的ID列為主鍵更新主鍵的代價(jià)很高,因?yàn)閷?huì)導(dǎo)致被更新的行移動(dòng)。因此,對(duì)于InnoDB表,我們一般定義主鍵為不可更新。二級(jí)索引訪問(wèn)需要兩次索引查找,第一次找到主鍵值,第二次根據(jù)主鍵值找到行數(shù)據(jù)。輔助索引(非聚簇索引)

在聚簇索引之上創(chuàng)建的索引稱之為輔助索引,輔助索引訪問(wèn)數(shù)據(jù)總是需要二次查找。輔助索引葉子節(jié)點(diǎn)存儲(chǔ)的不再是行的物理位置,而是主鍵值。通過(guò)輔助索引首先找到的是主鍵值,再通過(guò)主鍵值找到數(shù)據(jù)行的數(shù)據(jù)頁(yè),再通過(guò)數(shù)據(jù)頁(yè)中的Page Directory找到數(shù)據(jù)行。

Innodb輔助索引的葉子節(jié)點(diǎn)并不包含行記錄的全部數(shù)據(jù),葉子節(jié)點(diǎn)除了包含鍵值外,還包含了相應(yīng)行數(shù)據(jù)的聚簇索引鍵。

輔助索引的存在不影響數(shù)據(jù)在聚簇索引中的組織,所以一張表可以有多個(gè)輔助索引。在innodb中有時(shí)也稱輔助索引為二級(jí)索引。

InnoDB索引實(shí)現(xiàn)

InnoDB也使用B+Tree作為索引結(jié)構(gòu),但具體實(shí)現(xiàn)方式卻與MyISAM截然不同.

1)主鍵索引:

MyISAM索引文件和數(shù)據(jù)文件是分離的,索引文件僅保存數(shù)據(jù)記錄的地址。而在InnoDB中,表數(shù)據(jù)文件本身就是按B+Tree組織的一個(gè)索引結(jié)構(gòu),這棵樹(shù)的葉節(jié)點(diǎn)data域保存了完整的數(shù)據(jù)記錄。這個(gè)索引的key是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引。

(圖inndb主鍵索引)是InnoDB主索引(同時(shí)也是數(shù)據(jù)文件)的示意圖,可以看到葉節(jié)點(diǎn)包含了完整的數(shù)據(jù)記錄。這種索引叫做聚集索引。因?yàn)镮nnoDB的數(shù)據(jù)文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵(MyISAM可以沒(méi)有),如果沒(méi)有顯式指定,則MySQL系統(tǒng)會(huì)自動(dòng)選擇一個(gè)可以唯一標(biāo)識(shí)數(shù)據(jù)記錄的列作為主鍵,如果不存在這種列,則MySQL自動(dòng)為InnoDB表生成一個(gè)隱含字段作為主鍵,這個(gè)字段長(zhǎng)度為6個(gè)字節(jié),類型為長(zhǎng)整形。

2)InnoDB的輔助索引

InnoDB的所有輔助索引都引用主鍵作為data域。例如,下圖為定義在Col3上的一個(gè)輔助索引:

InnoDB 表是基于聚簇索引建立的。因此InnoDB 的索引能提供一種非常快速的主鍵查找性能。不過(guò),它的輔助索引(Secondary Index, 也就是非主鍵索引)也會(huì)包含主鍵列,所以,如果主鍵定義的比較大,其他索引也將很大。如果想在表上定義 、很多索引,則爭(zhēng)取盡量把主鍵定義得小一些。InnoDB 不會(huì)壓縮索引。

文字符的ASCII碼作為比較準(zhǔn)則。聚集索引這種實(shí)現(xiàn)方式使得按主鍵的搜索十分高效,但是輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵,然后用主鍵到主索引中檢索獲得記錄。

不同存儲(chǔ)引擎的索引實(shí)現(xiàn)方式對(duì)于正確使用和優(yōu)化索引都非常有幫助,例如知道了InnoDB的索引實(shí)現(xiàn)后,就很容易明白1、為什么不建議使用過(guò)長(zhǎng)的字段作為主鍵,因?yàn)樗休o助索引都引用主索引,過(guò)長(zhǎng)的主索引會(huì)令輔助索引變得過(guò)大。再例如,2、用非單調(diào)的字段作為主鍵在InnoDB中不是個(gè)好主意,因?yàn)镮nnoDB數(shù)據(jù)文件本身是一顆B+Tree,非單調(diào)的主鍵會(huì)造成在插入新記錄時(shí)數(shù)據(jù)文件為了維持B+Tree的特性而頻繁的分裂調(diào)整,十分低效,而使用自增字段作為主鍵則是一個(gè)很好的選擇。

InnoDB使用的是聚簇索引,將主鍵組織到一棵B+樹(shù)中,而行數(shù)據(jù)就儲(chǔ)存在葉子節(jié)點(diǎn)上,若使用"where id = 14"這樣的條件查找主鍵,則按照B+樹(shù)的檢索算法即可查找到對(duì)應(yīng)的葉節(jié)點(diǎn),之后獲得行數(shù)據(jù)。若對(duì)Name列進(jìn)行條件搜索,則需要兩個(gè)步驟:第一步在輔助索引B+樹(shù)中檢索Name,到達(dá)其葉子節(jié)點(diǎn)獲取對(duì)應(yīng)的主鍵。第二步使用主鍵在主索引B+樹(shù)種再執(zhí)行一次B+樹(shù)檢索操作,最終到達(dá)葉子節(jié)點(diǎn)即可獲取整行數(shù)據(jù)。

MyISAM索引實(shí)現(xiàn)

MyISAM索引文件和數(shù)據(jù)文件是分離的,索引文件僅保存數(shù)據(jù)記錄的地址

1)主鍵索引:

MyISAM引擎使用B+Tree作為索引結(jié)構(gòu),葉節(jié)點(diǎn)的data域存放的是數(shù)據(jù)記錄的地址。下圖是MyISAM主鍵索引的原理圖:

這里設(shè)表一共有三列,假設(shè)我們以Col1為主鍵,圖myisam1是一個(gè)MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件僅僅保存數(shù)據(jù)記錄的地址。

2)輔助索引(Secondary key)

在MyISAM中,主索引和輔助索引(Secondary key)在結(jié)構(gòu)上沒(méi)有任何區(qū)別,只是主索引要求key是唯一的,而輔助索引的key可以重復(fù)。如果我們?cè)贑ol2上建立一個(gè)輔助索引,則此索引的結(jié)構(gòu)如下圖所示:

同樣也是一顆B+Tree,data域保存數(shù)據(jù)記錄的地址。因此,MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應(yīng)數(shù)據(jù)記錄。

MyISAM的索引方式也叫做“非聚集”的,之所以這么稱呼是為了與InnoDB的聚集索引區(qū)分。

MyISM使用的是非聚簇索引,非聚簇索引的兩棵B+樹(shù)看上去沒(méi)什么不同,節(jié)點(diǎn)的結(jié)構(gòu)完全一致只是存儲(chǔ)的內(nèi)容不同而已,主鍵索引B+樹(shù)的節(jié)點(diǎn)存儲(chǔ)了主鍵,輔助鍵索引B+樹(shù)存儲(chǔ)了輔助鍵。表數(shù)據(jù)存儲(chǔ)在獨(dú)立的地方,這兩顆B+樹(shù)的葉子節(jié)點(diǎn)都使用一個(gè)地址指向真正的表數(shù)據(jù),對(duì)于表數(shù)據(jù)來(lái)說(shuō),這兩個(gè)鍵沒(méi)有任何差別。由于索引樹(shù)是獨(dú)立的,通過(guò)輔助鍵檢索無(wú)需訪問(wèn)主鍵的索引樹(shù)。

為了更形象說(shuō)明這兩種索引的區(qū)別,我們假想一個(gè)表如下圖存儲(chǔ)了4行數(shù)據(jù)。其中Id作為主索引,Name作為輔助索引。圖示清晰的顯示了聚簇索引和非聚簇索引的差異。

問(wèn)題:主鍵索引是聚集索引還是非聚集索引?

在Innodb下主鍵索引是聚集索引,在Myisam下主鍵索引是非聚集索引

聚簇索引和非聚簇索引的區(qū)別

聚簇索引的葉子節(jié)點(diǎn)存放的是主鍵值和數(shù)據(jù)行,支持覆蓋索引;二級(jí)索引的葉子節(jié)點(diǎn)存放的是主鍵值或指向數(shù)據(jù)行的指針。

由于節(jié)子節(jié)點(diǎn)(數(shù)據(jù)頁(yè))只能按照一顆B+樹(shù)排序,故一張表只能有一個(gè)聚簇索引。輔助索引的存在不影響聚簇索引中數(shù)據(jù)的組織,所以一張表可以有多個(gè)輔助索引

到此這篇關(guān)于Mysql中聚簇索引和非聚簇索引的區(qū)別詳解的文章就介紹到這了,更多相關(guān)Mysql聚簇索引和非聚簇索引內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久99蜜桃| 亚洲大全视频| 亚洲综合图色| 宅男噜噜噜66国产日韩在线观看| 色一区二区三区| 精品99在线| 久久久久久网| 国产在线看片免费视频在线观看| 97精品中文字幕| 国产在视频一区二区三区吞精| 国产极品嫩模在线观看91精品| 欧美国产另类| 精品视频一区二区三区四区五区 | 国产在线观看www| 国产66精品| 国产资源在线观看入口av| 国产精品第一国产精品| 日韩午夜一区| 日本不卡在线视频| 久久激情五月激情| 国产日韩欧美一区二区三区在线观看| 91欧美极品| 欧洲亚洲一区二区三区| 日韩国产在线不卡视频| 日韩中出av| 久久国产日韩欧美精品| 久久国产精品免费精品3p | 日本伊人久久| 久久av偷拍| 日韩欧美另类一区二区| 一区福利视频| 日韩精品欧美大片| 日韩精品视频中文字幕| 国产精品毛片视频| 色黄视频在线观看| 免费日韩av| 国产精品入口久久| 999久久久精品国产| 麻豆9191精品国产| 国产亚洲欧美日韩精品一区二区三区| 久久久久九九精品影院| 成人精品天堂一区二区三区| 另类av一区二区| 国产乱子精品一区二区在线观看 | 国产精品久久久久久模特| 韩国女主播一区二区三区| 午夜日韩福利| 91精品韩国| 性欧美精品高清| 美女久久一区| 自拍日韩欧美| 女同性一区二区三区人了人一| 成人精品高清在线视频| 欧美国产亚洲精品| 国产成人免费| 亚洲性色视频| 日韩中文字幕高清在线观看| 日韩综合精品| 夜久久久久久| 国产亚洲久久| 国产一区亚洲| 国产精品a级| 国产精品美女久久久| 麻豆一区在线| 视频一区二区三区入口| www.51av欧美视频| 四虎成人精品一区二区免费网站 | 国产精品毛片aⅴ一区二区三区| 欧美日韩水蜜桃| 美女久久久久久| 黄色欧美日韩| 精品国产欧美日韩| 日日夜夜免费精品| 激情久久五月| 免费一级欧美在线观看视频| 蜜桃一区二区三区在线观看| 九九精品调教| 麻豆91小视频| 日韩激情av在线| 亚洲成人精选| 精品视频国内| 日韩激情精品| 日韩一区欧美二区| 亚洲国产专区校园欧美| 欧美日韩国产欧| 久久久久久夜| 日韩影院二区| 欧美午夜精品一区二区三区电影| 在线视频亚洲欧美中文| 精品国产三区在线| 亚洲精品看片| 久久亚洲精品中文字幕蜜潮电影| 高清一区二区三区| 亚洲精品伊人| 好吊日精品视频 | 国产精品一区二区美女视频免费看| 五月天激情综合网| 98精品久久久久久久| 综合色就爱涩涩涩综合婷婷| 激情久久婷婷| 日韩国产欧美| 国产不卡一区| 国产精品任我爽爆在线播放| 日韩一区二区三区免费视频| 国产一级久久| 亚洲香蕉网站| 久久一级电影| 色88888久久久久久影院| 精品高清久久| 欧美精品第一区| 国产精品久久久久久久久久齐齐| 日本不卡视频在线观看| 蜜臀va亚洲va欧美va天堂| 欧美日韩精品在线一区| 一区二区精品伦理...| 精品视频一区二区三区四区五区| 国产精品乱战久久久| 欧美有码在线| 91精品视频一区二区| 日韩激情av在线| 日韩美女国产精品| 日韩在线黄色| 亚洲人成亚洲精品| 视频一区中文字幕精品| 视频在线不卡免费观看| 青青伊人久久| 91国内精品| 黑人精品一区| 欧美日韩免费观看一区=区三区 | 亚洲精品va| 久久久久国产精品一区二区| 日本一区二区高清不卡| 日韩大片在线观看| 欧美日韩中文一区二区| 激情欧美国产欧美| 亚洲制服少妇| 婷婷综合国产| 国产欧美二区| 色综合五月天| 成人在线丰满少妇av| 婷婷视频一区二区三区| 99久久精品费精品国产| 亚洲欧美日韩专区| 97久久超碰| 日韩有吗在线观看| 色在线中文字幕| 久久黄色影院| 五月精品视频| 蜜臀va亚洲va欧美va天堂 | 伊人久久大香线蕉av不卡| 国产一区二区三区四区五区| 老牛影视精品| 亚洲在线国产日韩欧美| 国产成人精品亚洲线观看| 欧美jjzz| 日韩精品中文字幕一区二区| 欧美男人天堂| 亚洲精品激情| 欧美亚洲国产精品久久| 国产亚洲高清一区| japanese国产精品| 蜜桃一区二区三区在线| 国产欧美日韩精品一区二区三区| 国产精品一区二区精品视频观看| 国产精品任我爽爆在线播放 | 日本免费在线视频不卡一不卡二| 国产一精品一av一免费爽爽| 国语对白精品一区二区| 不卡在线一区二区| 日韩1区2区日韩1区2区| 美女毛片一区二区三区四区最新中文字幕亚洲| 国产美女高潮在线观看| 色爱av综合网| 91久久中文| 日韩高清一区二区| 成人在线超碰| 在线视频亚洲| 日韩国产一区二| 日本欧美一区| 亚洲黄色免费看| 视频一区二区中文字幕| 国产精品对白| 精品一区三区| 国产精品一线天粉嫩av| 色88888久久久久久影院| 天堂精品久久久久| 国产91在线精品| 亚洲一区有码| 欧洲精品一区二区三区| 亚洲人妖在线| 一本大道色婷婷在线| 深夜日韩欧美| 伊人久久在线| 亚洲五月综合| 91久久视频| 日韩和欧美的一区| 亚洲精品日本| 日本a级不卡| 亚洲一二三区视频| 欧美在线黄色|