索引是什么意思
關(guān)注:23 發(fā)布時(shí)間:2022-02-08 19:25:01
相信很多程序員朋友都很熟悉數(shù)據(jù)索引。比較常見(jiàn)的索引是b樹(shù)索引,可以加快數(shù)據(jù)庫(kù)的檢索速度,但是會(huì)降低添加、修改、刪除操作的速度,一些寫(xiě)錯(cuò)會(huì)導(dǎo)致索引失效。
但是如果問(wèn),為什么使用索引后查詢(xún)更快?b樹(shù)指數(shù)的原理是什么?這個(gè)時(shí)候很多人可能還不知道。我就以mysql innodb引擎為例,談?wù)刡樹(shù)索引的原理。
索引基礎(chǔ)知識(shí)
mysql的基本存儲(chǔ)結(jié)構(gòu)是page,大概是這樣的:
在這里,我們需要了解以下幾點(diǎn)(非常重要):
當(dāng)我們使用mysql innodb引擎創(chuàng)建一個(gè)表時(shí),主鍵只能有一個(gè);如果我們不明確指定介于,mysql會(huì)自動(dòng)生成一個(gè)隱式字段作為主鍵。
聚集索引:用主鍵創(chuàng)建的索引;聚集索引的葉節(jié)點(diǎn)將數(shù)據(jù)存儲(chǔ)在表中;
非聚集索引:由非主鍵創(chuàng)建的索引;非聚集索引在葉節(jié)點(diǎn)存儲(chǔ)主鍵和索引列。使用非聚集索引查詢(xún)數(shù)據(jù)會(huì)查詢(xún)?nèi)~子上的主鍵,然后根據(jù)主鍵查找數(shù)據(jù)(這個(gè)過(guò)程稱(chēng)為返回表)。
頁(yè)面與頁(yè)面之間以及頁(yè)面與數(shù)據(jù)之間的關(guān)系
我們用聚集索引來(lái)解釋?zhuān)?yè)面和頁(yè)面之間,以及頁(yè)面和數(shù)據(jù)之間的關(guān)系如下:
數(shù)據(jù)頁(yè)之間形成雙向鏈表。
每個(gè)數(shù)據(jù)頁(yè)中的記錄都是單向鏈表;
每個(gè)數(shù)據(jù)頁(yè)根據(jù)內(nèi)部記錄生成一個(gè)頁(yè)面目錄。如果是主鍵,可以通過(guò)二分法在頁(yè)面目錄中快速定位;
如果我們按照一個(gè)非主鍵、非索引的列進(jìn)行查詢(xún),需要遍歷雙向鏈表才能找到頁(yè)面;遍歷頁(yè)面中的單向鏈表;如果表中的數(shù)據(jù)很大,這樣的查詢(xún)會(huì)很慢。
二叉樹(shù)索引的原理
我們先來(lái)看看b樹(shù)索引是什么樣子的(以集群/主鍵索引為例):
如果我們此時(shí)要查詢(xún)id=16的數(shù)據(jù):
查詢(xún)page -1,發(fā)現(xiàn)page -2存儲(chǔ)的數(shù)據(jù)小于30;
查詢(xún)第2頁(yè),發(fā)現(xiàn)第5頁(yè)存儲(chǔ)了10~20個(gè)數(shù)據(jù);
查詢(xún)第5頁(yè),找到id=16的數(shù)據(jù)。
顯然,在不使用索引的情況下,需要遍歷雙向鏈表來(lái)定位對(duì)應(yīng)的頁(yè)面,而有了索引,就可以通過(guò)層層“目錄”來(lái)定位對(duì)應(yīng)的頁(yè)面。
為什么b樹(shù)索引降低了添加、修改和刪除的速度
b樹(shù)是一棵平衡的樹(shù)。如果您添加、修改或刪除此樹(shù),它將破壞其原始結(jié)構(gòu)。
當(dāng)我們添加、修改和刪除數(shù)據(jù)時(shí),我們需要花費(fèi)額外的時(shí)間來(lái)維護(hù)索引;
由于這些額外的開(kāi)銷(xiāo),索引會(huì)降低添加、修改和刪除的速度。
思考考試問(wèn)題,歡迎留言討論
現(xiàn)在你明白b樹(shù)指數(shù)的原理了嗎?
比較后,留下一個(gè)深思熟慮的問(wèn)題:為什么建議使用自增長(zhǎng)主鍵作為索引?,你可以在你的信息中寫(xiě)下你的答案。
上一篇:淘寶搭配寶怎么使用?
猜你喜歡
-
4g網(wǎng)速最快的apn接入點(diǎn)72人支持
目前5g手機(jī)逐漸普及,但是我們發(fā)現(xiàn)問(wèn)題了嗎?我們的4g手機(jī)網(wǎng)絡(luò)已經(jīng)變慢,變得不穩(wěn)定。原因是網(wǎng)上眾說(shuō)紛紜。這里就不深究了。今天我就教你怎么解決這個(gè)問(wèn)題。事實(shí)上,我們只需要簡(jiǎn)單…
-
天貓sku最多能放多少?刪除和修改的方法34人支持
要說(shuō)哪個(gè)logo平臺(tái)最能代表電子商務(wù)的發(fā)展,那就是淘寶。淘寶上經(jīng)營(yíng)店鋪的商家很多,淘寶上購(gòu)物的用戶(hù)也很多。今天要回答的問(wèn)題是,天貓如何刪除sku?如果要?jiǎng)h除sku庫(kù)存數(shù)量,可以直接…
-
平時(shí)見(jiàn)面的普通人比朝九晚五的上班族收入高。1.年前回家,給城里空蕩蕩的房子貼對(duì)聯(lián)。我忘記帶鑰匙了。開(kāi)鎖的哥哥,開(kāi)鎖50,收了50塊。他每天開(kāi)30把左右的鎖,還不算他安裝修理鎖的…
-
怎么推廣網(wǎng)上商城73人支持
線(xiàn)下商家成立線(xiàn)上商城,不知道后期運(yùn)營(yíng)推廣怎么辦。此時(shí)商家應(yīng)該怎么做才能正確經(jīng)營(yíng),吸引客戶(hù),增加銷(xiāo)量?今天我就用自己認(rèn)識(shí)的開(kāi)店制度分享一下我的經(jīng)驗(yàn)!1.利用好營(yíng)銷(xiāo)工具,擴(kuò)大客戶(hù)…
-
如果2019年是直播爆發(fā)的第一年,那么2020年將是直播將商品全面普及的一年。在疫情的催化下,很多2019年還在觀望猶豫的企業(yè)和商家,被迫在2020年嘗試帶貨直播。淘寶數(shù)據(jù)顯示,2月份…
-
淘寶積分有什么用93人支持
淘寶積分怎么兌換?在淘寶商城購(gòu)物,不僅可以通過(guò)參與各種救濟(jì)活動(dòng)來(lái)減少資金支出,還可以通過(guò)完成每一筆訂單來(lái)獲得一定的淘寶積分。這類(lèi)積分不僅可以在購(gòu)物時(shí)套現(xiàn),還可以參與加幣…
-
淘寶和京東哪個(gè)靠譜7人支持
淘寶或者天貓個(gè)人用的比較多,因?yàn)樘詫毺熵埉a(chǎn)品種類(lèi)比較多。雖然有些東西是盜版或者高度仿制的,但是質(zhì)量也不錯(cuò),衣服鞋子都不錯(cuò)。小編主要利用京東購(gòu)買(mǎi)電子產(chǎn)品,他對(duì)京東的產(chǎn)品質(zhì)…
-
年底了,還是會(huì)有人想找工作。有的人干脆放棄。其實(shí)我覺(jué)得不是。就算年底找工作,也要考慮抓緊時(shí)間努力。孟曉今年8月辭職,現(xiàn)在是11月,所以仍然很難找到工作。心里除了迷茫,就是深…
-
抖音上熱門(mén)的訣竅44人支持
我也想知道如何在tik tok受歡迎。所以在這里,我想和大家簡(jiǎn)單分享一下我這幾天研究的一些資料,僅供參考。寫(xiě)好所有賬號(hào)信息(點(diǎn)進(jìn)去讓大家知道你是做什么的,你的職位是什么,你主…
-
男生個(gè)性簽名冷淡霸氣54人支持
1.夜局長(zhǎng)可能不是夢(mèng)多,但他一定想吃很多。2.別看了,是時(shí)候了。還好我是個(gè)小胖子,難過(guò)的時(shí)候能感覺(jué)到肚子。4.你夸的朋友圈叫甜甜圈。5.愛(ài)情不是我的一生,而是工作。6.喜歡一個(gè)人…
-
共享經(jīng)濟(jì)向各領(lǐng)域加速滲透融合的大趨勢(shì)不會(huì)改變35人支持
分享的本質(zhì)是一個(gè)東西被很多人或者群體使用,目標(biāo)是提高一個(gè)東西的使用價(jià)值,但是這個(gè)東西的價(jià)值不會(huì)因?yàn)榉窒矶淖儭K赃@個(gè)東西必須是通用的,有些東西如果是獨(dú)占的就不能共享…
-
京東金融安全可靠嗎?36人支持
我認(rèn)為這不是一個(gè)好主意。無(wú)論你有多少資產(chǎn),投資理財(cái)產(chǎn)品的資產(chǎn)配置多元化尤為重要。所有資產(chǎn)都配置在第三方金融平臺(tái)上,不符合“雞蛋不能放在一個(gè)籃子里”的投資原則。京東金…
熱門(mén)十大品牌
- 2021年我國(guó)十大黃金品牌排行榜31000人
- 眼鏡品牌十大排行榜前10名26363人
- 十大證券公司排行榜前10名23243人
- 2021年我國(guó)雜志排行榜前10名20056人
- 我國(guó)十大雜志排行榜前10名16359人
- 2021我國(guó)十個(gè)宜居城市排行榜前11489人
- 男士褲子品牌十大排行榜前10名11187人
- 2021十大火熱電腦游戲排行榜前11059人
- 十大衛(wèi)生巾品牌排行榜前十名8849人
- 我國(guó)十大襪子品牌排行榜前十名8373人
微商技巧
關(guān)注人數(shù):530
關(guān)注人數(shù):355
關(guān)注人數(shù):328
微商線(xiàn)下精準(zhǔn)引流秘訣:微商大咖不外傳的方法
關(guān)注人數(shù):376
關(guān)注人數(shù):377
關(guān)注人數(shù):1130