來看看程式設計師經典面試題,為什麼資料庫索引多用B+樹
導讀 | 最近很多小夥伴都參與了面試更換了工作,校招也已經開始了。最近面試了幾個實習生,感覺基礎能力都不大行,資料庫在程式設計師的面試中佔有舉足輕重的一個作用。今天我們來講一講資料庫的索引是什麼? |
索引,就跟我們的書本的目錄一樣,如果一本書沒有目錄,那麼你要找某一個知識點,那自然是相當費勁的。資料庫的索引就是扮演這樣的角色,索引會告訴你對應的資料存放的磁碟地址,就好比目錄上面的頁數。那麼資料庫的“目錄”究竟長什麼樣子呢?
常見的資料庫索引有下面三種型別,第一是雜湊表,雜湊表相信大家都已經不陌生了,我們可以將資料庫的索引欄位後雜湊並儲存下來。只要雜湊演算法設計得合理,我們可以非常快地找到對應資料的一個存放地址,然後到對應的存放地址就可以快速地找到資料。那麼,雜湊索引有什麼缺點呢?首先是雜湊表比較適合在記憶體中使用,但是如果要落盤,就比較麻煩了,特別是雜湊表擴容的時候,磁碟的很多資料都會修改。第二,雜湊表沒辦法進行一個區間的篩選。
第二種則是陣列索引,與上述的雜湊表類似,但又有所不同。與雜湊索引類似,陣列索引的效率也是非常高的,在一個有序陣列裡面去查詢元素,我們只要進行二分查詢即可。但是陣列索引的問題也是非常地明顯,那便是插入非常的麻煩,你插入一個新的元素,就要把後面所有的元素都往後移動一下。所以,陣列索引我們一般只有靜態資料才會使用。
有序陣列都講了,那麼接下來肯定就是二叉樹了,我們說的二叉樹當然是二叉排序樹,二叉排序樹相對與陣列,比較大的優點是方便插入。但是同時也存在這麼一個問題,因為索引的資料可能存在磁碟,那麼如果索引的資料超過1000條的時候,就有可能要經過10次才能夠找到最終的資料,而磁碟IO的瓶頸在於尋道跟旋轉,效率必然會降低。所以,我們要儘量地減少在磁碟中尋道跟旋轉的次數,所以多叉樹就被廣泛應用在資料庫索引當中了。而在多叉樹中,比較常被使用的,便是B+樹。
程式設計師經典面試題,為什麼資料庫索引多用B+樹
現在你知道了為什麼資料索引有哪些,以及為什麼B+樹被廣泛應用的道理了吧。歡迎大家關注我,共同學習,共同進步。大家的支援是我繼續嘮嗑的動力。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2686183/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面試題:MySQL索引為什麼用B+樹?面試題MySql索引
- 資料庫索引為什麼用B+樹實現?資料庫索引
- 智力題(程式設計師面試經典)程式設計師面試
- Mysql索引資料結構為什麼是B+樹?MySql索引資料結構
- MySQL索引為什麼使用B+樹?MySql索引
- 新書出版 |《資料庫程式設計師面試筆試寶典》新書資料庫程式設計師面試筆試
- 面試 (MySQL 索引為啥要選擇 B+ 樹)面試MySql索引
- 【JAVA面試資料】程式設計師面試之葵花寶典2Java面試程式設計師
- 【JAVA面試資料】程式設計師面試之葵花寶典1Java面試程式設計師
- 新書出版 |《資料庫程式設計師面試筆試真題庫》新書資料庫程式設計師面試筆試
- 好程式設計師Java教程分享經典Java main方法面試題程式設計師JavaAI面試題
- Java初中級程式設計師面試題寶典Java程式設計師面試題
- MySQL資料庫索引選擇使用B+樹MySql資料庫索引
- 【程式設計師面試金典】20180801程式設計師面試
- 【程式設計師面試金典】洪水程式設計師面試
- Java程式設計師面試時應注意的三個經典問題!Java程式設計師面試
- JAVA程式設計師面試題庫分享Java程式設計師面試題
- 為什麼高階程式設計師討厭程式設計面試? - Adam程式設計師面試
- 鄭州達內:設計師常的經典面試題面試題
- MySQL為什麼採用B+樹作為索引結構?MySql索引
- 程式設計師面試之MySQL資料庫表的設計程式設計師面試MySql資料庫
- 大資料面試題整理-好程式設計師大資料面試題程式設計師
- 程式設計師面試題!親身經歷!程式設計師面試題
- 徹底搞懂MySQL為什麼要使用B+樹索引MySql索引
- 新書出版 |《資料庫程式設計師面試筆試真題與解析》新書資料庫程式設計師面試筆試
- 程式設計師面試經驗程式設計師面試
- 程式設計師面試備戰篇:18個經典MySQL面試專題解析(乾貨分享答案)程式設計師面試MySql
- 好程式設計師大資料培訓分享大資料面試寶典三程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典四程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典六程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典一程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典二程式設計師大資料面試
- 為什麼選擇b+樹作為儲存引擎索引結構儲存引擎索引
- 程式設計師面試金典Chapter1程式設計師面試APT
- MySQL為什麼選B+樹MySql
- 【200人面試經驗】,程式設計師面試,常見面試題解析程式設計師面試題
- Mysql InnoDB B+樹索引和雜湊索引的區別? MongoDB 為什麼使用B-樹?MySql索引MongoDB
- 經典面試題面試題