索引初探(二)

2022-02-14 12:23:57 字數 868 閱讀 5691

在sqlserver中分為兩種索引,一是聚集索引;一是費聚集索引。下面我就分別對兩種索引進行介紹並分析其區別和各自的特點。

1.聚集索引

之前看過乙個比方,我覺得非常恰當這裡也用這個例子來說明兩種索引。我們的字典本身就像是乙個聚集索引,我們根據拼音查詢目錄,然後直接可以找到查詢字的頁,而字典正文就是按照拼音的順序進行的排序。從中我們不難總結聚集索引的特點:

如圖:

接下來我們簡單討論一下:

1)聚集索引與插入操作

最簡單的情況下,插入操作根據索引找到對應的資料頁,然後通過挪動已有的記錄為新資料騰出空間,最後插入資料。

如果資料頁已滿,則需要拆分資料頁(頁拆分是一種耗費資源的操作,一般資料庫系統中會有相應的機制要儘量減少頁拆分的次數,通常是通過為每頁預留空間來實現):

在該使用的資料段(extent)上分配新的資料頁,如果資料段已滿,則需要分配新段。

調整索引指標,這需要將相應的索引頁讀入記憶體並加鎖。

大約有一半的資料行被歸入新的資料頁中。

2)聚集索引與刪除操作

刪除行將導致其下方的資料行向上移動以填充刪除記錄造成的空白。

如果刪除的行是該資料頁中的最後一行,那麼該資料頁將被**,相應的索引頁中的記錄將被刪除。如果**的資料頁位於跟該錶的其它資料頁相同的段上,那麼它可能在隨後的時間內被利用。如果該資料頁是該段的唯一乙個資料頁,則該段也被**。

對於資料的刪除操作,可能導致索引頁中僅有一條記錄,這時,該記錄可能會被移至鄰近的索引頁中,原索引頁將被**,即所謂的「索引合併」。

Lucene初探之索引過程分析(二)

在上乙個章節我們講到lucene的索引過程的起點是建立乙個indexwriter物件。在indexwriter物件建立之後,我們將會建立document文件物件,並且將其加入域 field document doc new document doc.add new field path f.getp...

MongoDB初探 細說索引

一 索引操作 索引是為了優化查詢速度而生,mongodb的索引和其他關係型資料庫,比如mysql,oracle等的索引幾乎相同,對於它們的索引優化經驗同樣適用於mongodb。1 建立索引 mongodb中建立索引是通過ensureindex操作完成的。下面測試了在使用索引和不使用索引下的效能差別,...

索引的初探(一)

以前聽做dba的朋友說索引能解決資料庫百分之八十的問題,我也開始簡單的寫幾篇關於索引的隨筆,順便來總結一下我理解的索引以及相關的知識,畢竟進步在於總結。簡介 索引是資料庫中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。我的理解就像是一本書,沒有目錄你也可以正常閱讀,但是想要直接去讀某個章節...