自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員經(jīng)典面試題,為什么數(shù)據(jù)庫(kù)索引多用B+樹

數(shù)據(jù)庫(kù)
最近很多小伙伴都參與了面試更換了工作,校招也已經(jīng)開始了。最近面試了幾個(gè)實(shí)習(xí)生,感覺基礎(chǔ)能力都不大行,數(shù)據(jù)庫(kù)在程序員的面試中占有舉足輕重的一個(gè)作用。今天我們來(lái)講一講數(shù)據(jù)庫(kù)的索引是什么?

 最近很多小伙伴都參與了面試更換了工作,校招也已經(jīng)開始了。最近面試了幾個(gè)實(shí)習(xí)生,感覺基礎(chǔ)能力都不大行,數(shù)據(jù)庫(kù)在程序員的面試中占有舉足輕重的一個(gè)作用。今天我們來(lái)講一講數(shù)據(jù)庫(kù)的索引是什么?

索引,就跟我們的書本的目錄一樣,如果一本書沒有目錄,那么你要找某一個(gè)知識(shí)點(diǎn),那自然是相當(dāng)費(fèi)勁的。數(shù)據(jù)庫(kù)的索引就是扮演這樣的角色,索引會(huì)告訴你對(duì)應(yīng)的數(shù)據(jù)存放的磁盤地址,就好比目錄上面的頁(yè)數(shù)。那么數(shù)據(jù)庫(kù)的“目錄”究竟長(zhǎng)什么樣子呢?

常見的數(shù)據(jù)庫(kù)索引有下面三種類型,第一是哈希表,哈希表相信大家都已經(jīng)不陌生了,我們可以將數(shù)據(jù)庫(kù)的索引字段后哈希并保存下來(lái)。只要哈希算法設(shè)計(jì)得合理,我們可以非??斓卣业綄?duì)應(yīng)數(shù)據(jù)的一個(gè)存放地址,然后到對(duì)應(yīng)的存放地址就可以快速地找到數(shù)據(jù)。那么,哈希索引有什么缺點(diǎn)呢?首先是哈希表比較適合在內(nèi)存中使用,但是如果要落盤,就比較麻煩了,特別是哈希表擴(kuò)容的時(shí)候,磁盤的很多數(shù)據(jù)都會(huì)修改。第二,哈希表沒辦法進(jìn)行一個(gè)區(qū)間的篩選。

第二種則是數(shù)組索引,與上述的哈希表類似,但又有所不同。與哈希索引類似,數(shù)組索引的效率也是非常高的,在一個(gè)有序數(shù)組里面去查找元素,我們只要進(jìn)行二分查找即可。但是數(shù)組索引的問(wèn)題也是非常地明顯,那便是插入非常的麻煩,你插入一個(gè)新的元素,就要把后面所有的元素都往后移動(dòng)一下。所以,數(shù)組索引我們一般只有靜態(tài)數(shù)據(jù)才會(huì)使用。

有序數(shù)組都講了,那么接下來(lái)肯定就是二叉樹了,我們說(shuō)的二叉樹當(dāng)然是二叉排序樹,二叉排序樹相對(duì)與數(shù)組,比較大的優(yōu)點(diǎn)是方便插入。但是同時(shí)也存在這么一個(gè)問(wèn)題,因?yàn)樗饕臄?shù)據(jù)可能存在磁盤,那么如果索引的數(shù)據(jù)超過(guò)1000條的時(shí)候,就有可能要經(jīng)過(guò)10次才能夠找到最終的數(shù)據(jù),而磁盤IO的瓶頸在于尋道跟旋轉(zhuǎn),效率必然會(huì)降低。所以,我們要盡量地減少在磁盤中尋道跟旋轉(zhuǎn)的次數(shù),所以多叉樹就被廣泛應(yīng)用在數(shù)據(jù)庫(kù)索引當(dāng)中了。而在多叉樹中,比較常被使用的,便是B+樹。

 

程序員經(jīng)典面試題,為什么數(shù)據(jù)庫(kù)索引多用B+樹

 

現(xiàn)在你知道了為什么數(shù)據(jù)索引有哪些,以及為什么B+樹被廣泛應(yīng)用的道理了吧。歡迎大家關(guān)注我,共同學(xué)習(xí),共同進(jìn)步。大家的支持是我繼續(xù)嘮嗑的動(dòng)力。

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2020-04-26 09:48:11

MySQL數(shù)據(jù)庫(kù)架構(gòu)

2019-03-14 09:51:50

MySQL存儲(chǔ)邏輯架構(gòu)

2020-05-06 15:02:58

MySQL數(shù)據(jù)庫(kù)技術(shù)

2019-09-24 09:33:53

MySQLB+樹InnoDB

2019-10-18 09:40:19

程序員固態(tài)硬盤Linux

2022-03-28 08:24:52

MySQL聚簇索引非聚簇索引

2024-05-22 09:01:53

InnoDBB+索引

2021-07-04 15:16:14

索引B+數(shù)據(jù)庫(kù)

2024-07-24 08:38:07

2021-06-11 07:26:16

B+樹MySQL 索引

2020-02-12 19:01:22

索引B-樹B+樹

2020-05-11 10:48:01

技術(shù)資訊

2012-05-25 10:15:06

Java程序員面試題

2020-04-01 18:08:57

MySQL B-樹B+樹

2019-08-29 10:46:22

MySQL索引數(shù)據(jù)庫(kù)

2020-04-08 10:18:56

MySQL數(shù)據(jù)庫(kù)SQL

2021-06-27 22:48:28

Redis數(shù)據(jù)庫(kù)內(nèi)存

2023-06-06 09:03:06

InnodbMySQL

2021-11-30 21:10:19

數(shù)據(jù)庫(kù)B樹索引

2020-02-06 08:58:09

程序員技術(shù)數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)