您現在的位置是:首頁 > 運動

【資料庫索引】深度為3的資料庫索引能存多少資料,你知道是什麼嗎

由 技術大咖秀 發表于 運動2021-06-28
簡介應該建立索引的情況:經常需要搜尋的列,加快查詢速度

深度為3的資料庫索引能存多少資料

一、啥是索引

資料庫索引是建立在表的一列或多個列上的輔助物件,用於加快資料的檢索,類似於書籍的索引。當資料庫表中的資料越來越多的時候,查詢效率變慢,這時候我們就需要資料庫索引了。

【資料庫索引】深度為3的資料庫索引能存多少資料,你知道是什麼嗎

優點:

加快資料的查詢速度;

唯一索引可以確保資料的唯一性;

可以加速表和表之間的連線,實現表和表之間的參照完整性;

使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間。

缺點:

佔用資料表以外的物理儲存空間;

需要對索引進行維護;

表進行更新操作時,索引需要被重建,降低了資料的維護速度。

二、索引的分類

1、

普通索引

(INDEX)

create index index_name on table_name(col_name)

普通索引是最基本的索引,沒有什麼特別限制,主要是為了增加這個欄位的查詢速度。

2、

唯一索引

(UNIQUE)

create unique index user_id_index on user(id)

唯一索引是強調錶中資料記錄的唯一性,允許NULL值。

3、

主鍵索引

(PRIMAY KEY)

主鍵索引是一種特殊的唯一索引,將索引建在主鍵上,不允許NULL值。

4、

組合索引

組合索引是多列值組成一個索引,專門用於組合搜尋,效率大於索引合併。

5、

全文索引

(FULLTEXT)

全文索引對文字的內容進行分詞搜尋。

三、索引的實現方式

【資料庫索引】深度為3的資料庫索引能存多少資料,你知道是什麼嗎

1、 B+樹

B+樹和紅黑樹差不多,都是是為了儘量保持樹的平衡。但紅黑樹是二叉樹,B+樹是多叉樹,節點下面可以有多個子節點,資料庫會預設設定子節點數的一個最大值,這個值不會太小,所以B+樹一般來說比較矮胖,而紅黑樹就比較瘦高。

如果經常需要同時對兩個欄位進行and查詢,那麼使用兩個單獨索引不如建立一個複合索引,因為兩個單獨索引通常資料庫只能使用其中一個,而使用複合索引因為索引本身就對應到兩個欄位上的,效率會有很大提高。

2、雜湊索引

雜湊索引,又叫雜湊索引,是透過雜湊函式來定位的一種索引。不過很少有單獨使用雜湊索引的,反而是雜湊檔案組織用的比較多。

雜湊檔案組織就是根據一個鍵透過雜湊計算把對應的記錄都放到同一個槽中,這樣的話相同的鍵值對應的記錄就一定是放在同一個檔案裡了,也就減少了檔案讀取的次數,提高了效率。

雜湊索引呢就是根據對應鍵的雜湊碼來找到最終的索引項的技術,其實和B樹就差不多了,也就是一種索引之上的二級輔助索引,我理解雜湊索引都是二級或更高階的稀疏索引,否則桶就太多了,效率也不會很高。

3、點陣圖索引

點陣圖索引是一種針對多個欄位的簡單查詢設計一種特殊的索引,適用範圍比較小,只適用於欄位值固定並且值的種類很少的情況,比如性別,只能有男和女,或者級別,狀態等,並且只有在同時對多個這樣的欄位查詢時才能體現出點陣圖的優勢。

create bitmap index idx_name on table(col_name)

點陣圖的基本思想就是對每一個條件都用0或者1來表示,如有5條記錄,性別分別是男,女,男,男,女,那麼如果使用點陣圖索引就會建立兩個點陣圖,對應男的10110和對應女的01001,這樣做有什麼好處呢,就是如果同時對多個這種型別的欄位進行and或or查詢時,可以使用按位與和按位或來直接得到結果了。

四、建立索引的原則

凡事都有兩面,有利必有弊。建立索引也是同樣的道理,我們在增加了檢索速度的同時,也會損耗相當的更新效能。所以建立索引前,要慎重的討論清楚,確實需要的時候再加。

【資料庫索引】深度為3的資料庫索引能存多少資料,你知道是什麼嗎

應該建立索引的情況:

經常需要搜尋的列,加快查詢速度;

主鍵列上,強調唯一性;

經常用在連線的列,這些列主要是一些外來鍵,可以加快連線的速度;

經常需要根據範圍進行搜尋的列上建立索引,因為索引已經排序,其指定的範圍是連續的;

經常需要排序的列上建立索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間;

經常使用在WHERE子句中的列上面建立索引,加快條件的判斷速度。

不應該建立索引的情況:

在查詢中很少使用或者參考的列不應該建立索引。因為很少使用到,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。

只有很少資料值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的資料行佔了表中資料行的很大比例,即需要在表中搜索的資料行的比例很大。增加索引,並不能明顯加快檢索速度。

定義為text, image和bit資料型別的列不應該增加索引。這是因為,這些列的資料量要麼相當大,要麼取值很少。

當修改效能遠遠大於檢索效能時,不應該建立索引。這是因為,修改效能和檢索效能是互相矛盾的。當增加索引時,會提高檢索效能,但是會降低修改效能。當減少 索引時,會提高修改效能,降低檢索效能。因此,當修改效能遠遠大於檢索效能時,不應該建立索引。

推薦文章

  • 王思聰女友做飯出事故,多處被燙傷,故意扯開衣服露出胸前惹爭議

    王思聰女友做飯出事故,多處被燙傷,故意扯開衣服露出胸前惹爭議不少網友看見慎婕的動態後紛紛留言讓她注意一些,並表示公主是不能下廚做飯的,還有人提醒慎婕被燙傷的疤很難被消除,也有人誇讚慎婕的面板狀態好...

  • 新春好去處!佛山絕美古村落約起!詩情畫意都在這裡

    自駕:佛山一環高速→樂平大道→458想到→大旗頭古村公交:佛山城巴總站→三水汽車站→638路公交→大旗頭村蘆苞長岐村長岐村始建於明代,現存最古老的房屋建於清朝初年,依山傍水,村前兩口大池塘引入北江水,村前正面有兩個山崗隔河相望,村後背靠文筆...

  • 雲上應用暢遊全球!華為雲GA正式商用

    雲上應用暢遊全球!華為雲GA正式商用日前華為雲GA正式商用華為雲全球加速服務(Global Accelerator,GA)為全球化業務使用者提供應用加速服務,透過統一的公網IP,和高可靠、低延時、易管理、安全合規的網路服務,使終端使用者在全球能快速訪問雲上應用,獲得優質體驗...