從栗子話索引
當我們在遇到不懂的漢字的時候該怎麼辦?查字典。根據拼音查,根據部首查,這就是索引應用的例項。
百科定義
索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中特定的資訊。資料庫索引的主要目的就是加快檢索表中的資料,好比一本書的目錄一樣,
能幫助你快速定位。
如果新華字典沒有索引,那可能最後一頁的字你需要從第一頁翻到最後一頁,
這是多麼令人絕望的事情。
索引根據儲存結構又可劃分為聚集索引和非聚集索引兩種。
聚集索引基於資料行的鍵值在表內排序和儲存這些資料行。 每個表只能有乙個聚集索引,因為資料行本身只能按乙個順序儲存。–百科以上就是官方的話,事實上,聚集索引就是我們所熟知的字典的拼音查詢,
我們將漢字的拼音開頭按照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年,是時候從頭開始沉澱,一步乙個腳印,做好乙個合格的程式設計師,在 的世界裡起舞。要了解資料結構,首先使用文字拆分法,即資料 結構,那什麼是資料呢?其實,資料很好理解,你的家族就可以理解為乙個資料...
資料結構,小步前進之線性表
鏈式儲存結構 鍊錶 顧名思義,就是具有線一樣的特質的表。表的元素像直線一樣排列。即 把所有資料用一根線兒串起來,再儲存到物理空間中 例如在學生的成績表中,乙個學生的姓名 學號 成績資訊為乙個結點,然後有乙個開始結點 它的前面沒記錄 和乙個終端結點 它的後面沒記錄 這種邏輯結構稱為線性表,請注意,是邏...