Java常見面試題—數(shù)據(jù)庫索引詳解

Java常見面試題—數(shù)據(jù)庫索引詳解

長沙達內(nèi)教育      2022-03-22 16:20:01     13

Java常見面試題—數(shù)據(jù)庫索引詳解,索引在mysql中也叫做鍵(key),是存儲引擎用于快速找到記錄的一種數(shù)據(jù)結(jié)構(gòu)。索引的作用:加速查詢操作;副作用:降低寫操作性能

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

索引在mysql中也叫做鍵(key),是存儲引擎用于快速找到記錄的一種數(shù)據(jù)結(jié)構(gòu)。

索引的作用:加速查詢操作;副作用:降低寫操作性能;

索引常見的兩種數(shù)據(jù)結(jié)構(gòu)類型:

1.B-Tree索引:它就是傳統(tǒng)意義上的索引,它是最常用、最有效的索引。

2.哈希索引:哈希索引是一種自適應(yīng)的索引,數(shù)據(jù)庫會根據(jù)表的使用情況自動生成哈希索引,我們?nèi)藶槭菦]辦法干預(yù)的。

B-Tree索引

大多數(shù)mysql引擎都支持這種索引;

  • B-Tree通常意味著所有的值都是按順序存儲的,
  • 并且每一個葉子頁到根的距離相同;

B-Tree(M=4)

B-Tree(M=4,依次插入1~6)

存儲引擎不需要進行全表掃描來獲取需要的數(shù)據(jù),取而代之是從索引的根節(jié)點開始進行搜索;

適用于:

  • 全鍵值查找(全值匹配)
  • 鍵值范圍(若是有多列的合并索引,需要精確匹配某一列并范圍匹配另一列)
  • 鍵前綴查找
  • 按順序查找(orderby)

限制:

  • 如果不是按照索引的最左列開始查找,則無法使用索引
  • 不能跳過索引中的列
  • 如果查詢中有某個列的范圍查詢,其右邊的所有列都無法使用索引優(yōu)化查詢

哈希索引

在mysql中,只有memory引擎顯式支持哈希索引;基于哈希表實現(xiàn),只有精確匹配索引所有列的查詢才有效;對于每一行數(shù)據(jù),存儲引擎會對所有的索引列計算一個哈希碼,不同的鍵值行計算出的哈希碼不一樣,哈希索引將所有的哈希碼存儲在索引中,同時在哈希表中保存指向每個數(shù)據(jù)行的指針;(hash索引結(jié)構(gòu):hash值:指針)

優(yōu)勢:查找速度非???/p>

限制:

  • 無法用于排序
  • 不支持部分索引列匹配查找
  • 只支持等值比較查詢

索引優(yōu)點:

  • 降低需要掃描的數(shù)據(jù)量,根據(jù)索引定位資源,減少IO次數(shù);
  • 可以幫助避免排序操作,因為索引本身就是根據(jù)順序存放的,避免使用臨時表;
  • 幫助將隨機IO轉(zhuǎn)為順序IO,提示系統(tǒng)性能;

索引的缺點

  • 第一,創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。
  • 第二,索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。
  • 第三,當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度。

哪些情況需要加索引?

  • 在經(jīng)常需要搜索的列上,可以加快搜索的速度;
  • 在作為主鍵的列上,強制該列的唯一性和組織表中數(shù)據(jù)的排列結(jié)構(gòu);
  • 在經(jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;
  • 在經(jīng)常需要根據(jù)范圍進行搜索的列上創(chuàng)建索引,因為索引已經(jīng)排序,其指定的范圍是連續(xù)的;
  • 在經(jīng)常需要排序的列上創(chuàng)建索引,因為索引已經(jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時間;
  • 在經(jīng)常使用在WHERe子句中的列上面創(chuàng)建索引,加快條件的判斷速度。

以上就是長沙達內(nèi)教育java培訓(xùn)機構(gòu)小編分享的“Java常見面試題—數(shù)據(jù)庫索引詳解”的內(nèi)容,希望對大家有幫助,更多java面試題請繼續(xù)關(guān)注長沙達內(nèi)教育java培訓(xùn)機構(gòu)官網(wǎng),每天會精彩內(nèi)容分享與你。

相關(guān)java面試題推薦

2019最新最全java面試題及答案:http://www.bjpowernode.com/tutorial_baseinterviewquestions/

Java常見面試題匯總:http://www.bjpowernode.com/javazixun/1007.html

2019最新java面試題含答案(基礎(chǔ)篇):http://www.bjpowernode.com/javazixun/1145.html

各大互聯(lián)網(wǎng)公司Java面試題匯總:http://www.bjpowernode.com/javazixun/1867.html

2019最新Java常見面試題(附帶答案):http://www.bjpowernode.com/javazixun/891.html

常被問到的Java面試題(帶全部答案):http://www.bjpowernode.com/javazixun/886.html

Java筆試題

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹防上當。