小步前進之細談資料庫索引

2021-10-05 12:28:13 字數 1635 閱讀 5752

從栗子話索引

當我們在遇到不懂的漢字的時候該怎麼辦?查字典。根據拼音查,根據部首查,這就是索引應用的例項。

百科定義

索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中特定的資訊。

資料庫索引的主要目的就是加快檢索表中的資料,好比一本書的目錄一樣,

能幫助你快速定位。

如果新華字典沒有索引,那可能最後一頁的字你需要從第一頁翻到最後一頁,

這是多麼令人絕望的事情。

索引根據儲存結構又可劃分為聚集索引非聚集索引兩種。

聚集索引基於資料行的鍵值在表內排序和儲存這些資料行。 每個表只能有乙個聚集索引,因為資料行本身只能按乙個順序儲存。–百科

以上就是官方的話,事實上,聚集索引就是我們所熟知的字典的拼音查詢,

我們將漢字的拼音開頭按照a-z排序,隨後我們查詢「安」字我們

就可以找到a下面的安在第幾頁,從而提高查詢效率,索引也是如此。

資料總是要有排序規則的,這個規則需要以什麼為標準就是我們熟知的索引。

心得:當我們建立id時,資料會按照id排序,這就是聚集索引,

我們可以根據指定的id來查詢特定的值,這是效率最高的。

例如:根據你的員工編號或者學生編號來查詢你的資訊,會大大提高查詢效率。

每個表只能有一種聚集索引,因為只能按照一種索引進行排序。

ps:主鍵是一種特殊的索引,如果建立表的時候表中乙個聚集索引都木有,

同時建立時沒有強制指定使用非聚集索引,則主鍵會自動建立為聚集索引,否則為非聚集索引。

下面的表總結了何時使用聚集索引或非聚集索引(重要):

動作描述

使用聚集索引

使用非聚集索引

列經常被分組排序應應

返回某範圍內的資料應不應

乙個或極少不同值

不應不應

小數目的不同值應不應

大數目的不同值不應應

頻繁更新的列不應應

外來鍵列應

應主鍵列應應

頻繁修改索引列不應應

參考

關係型資料庫大都採用b-tree結構的索引。

上圖為最簡單的索引,即只有乙個欄位id,範圍0~250。

從圖中可以看到,最上層為根索引,將最底層的索引0~10提取為一行,最上層將第二層0-40提取為一行。

如果要查id=223,我們先要從根節點查,然後查第二層,最後查最後一層,則只用3次即可查到對應結果。

需要注意的是,只有非聚集索引才需要用指標去資料表查詢對應的行資料。對於聚集索引來說,葉節點就是表本身,因此省了這一步。

sql server僅提供b-tree結構的索引。其它關係型資料庫也都使用b-tree,但某些產品提供一些增強。例如oracle還提供bitmap-index,mysql提供hash index。

參考索引與執行計畫

小步前進之細談資料庫索引

從栗子話索引 當我們在遇到不懂的漢字的時候該怎麼辦?查字典。根據拼音查,根據部首查,這就是索引應用的例項。百科定義 索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中特定的資訊。資料庫索引的主要目的就是加快檢索表中的資料,好比一本書的目錄一樣,能幫助你快速定位。如果新華...

小步前進之資料結構基礎

物理結構 本文是對學習知識的總結,基於現有知識的基礎上加上個人理解,如果有侵權,必刪。工作中crud了2年,是時候從頭開始沉澱,一步乙個腳印,做好乙個合格的程式設計師,在 的世界裡起舞。要了解資料結構,首先使用文字拆分法,即資料 結構,那什麼是資料呢?其實,資料很好理解,你的家族就可以理解為乙個資料...

資料結構,小步前進之線性表

鏈式儲存結構 鍊錶 顧名思義,就是具有線一樣的特質的表。表的元素像直線一樣排列。即 把所有資料用一根線兒串起來,再儲存到物理空間中 例如在學生的成績表中,乙個學生的姓名 學號 成績資訊為乙個結點,然後有乙個開始結點 它的前面沒記錄 和乙個終端結點 它的後面沒記錄 這種邏輯結構稱為線性表,請注意,是邏...