SQL Server索引 - 非叢集索引 <第七篇>

來源:互聯網
上載者:User

標籤:

一、非叢集索引維護                                                                                                

  非叢集索引的行定位器值保持相同的叢集索引值,即使該叢集索引列物理上重新置放後,也是如此。

  為了最佳化這個維護開銷,SQL Server添加一個指向舊資料頁的指標,以在頁面分割之後指向新的資料頁面,而不是更新所有相關非叢集索引的行定位器。這樣,雖然降低了非叢集索引的維護開銷,但是增加了從非叢集索引行到資料行的導航開銷,因為添加了一箇舊資料頁面和信資料頁面之間的串連。因此,將叢集索引作為行定位器降低了非叢集索引相關的開銷。

二、定義書籤尋找                                                                                                       

  當一個查詢請求不是最佳化器選擇的非叢集索引一部分的列時,需要一個尋找。這對一個叢集索引來說是一個關鍵字尋找,堆堆表來說是一個RID尋找。這些尋找的統稱來自於舊的定義名 - 書籤尋找。這種尋找根據非叢集索引的行定位器值,從表中讀取對應的資料行,除了索引頁面上的邏輯讀操作意外,還需要一個資料頁面上的邏輯讀。但是,如果查詢需要的列在索引中,那麼就不需要訪問資料頁面。這被稱為覆蓋索引。

  這些書籤尋找是大結果集最好使用叢集索引的原因。叢集索引不需要書籤尋找,因為葉子頁面就是資料頁面。

三、非叢集索引的建議                                                                                                

  因為表只能有一個叢集索引,所以可以使用多個非叢集索引的靈活性來協助改進效能。下面將說明非叢集索引使用的決定因素。

  1、何時使用非叢集索引

  非叢集索引在需要從一個大表上讀取少量的行的時候最有用,隨著需要檢索的行數量的增加,書籤尋找的開銷成比例增加。為了從表中檢索少量的行,索引列應該有很高的選擇性。

  適合使用非叢集索引的情況:

  • 列具有高選擇性;
  • 根據列擷取少量資料;
  • 窄列;
  • 列經常被分組排序;

  下面給出不適合建立叢集索引,但也能夠使用叢集索引的情況

  •   頻繁更新的列;
  •   寬類型列;

  叢集索引頻繁更新是非常消耗資源的,因為會影響表的順序,同時也影響到其他索引,在頻繁更新的列上的非叢集索引的開銷不像叢集索引那麼大。在非叢集索引上的更新操作被限定在基本表和非叢集索引上,它不影響表上的其他非叢集索引。

  寬類型列也類似,非叢集索引列上使用寬類型,雖影響比如叢集索引那麼大,但是也要小心使用。

  2、何時不使用叢集索引

  非叢集索引不適合於大量行的查詢。這樣的查詢使用叢集索引更好,叢集索引不需要大量的書籤尋找,而非聚集索除了在索引列上檢索的邏輯讀外,書籤尋找也需要消耗太多資源。SQL Server查詢最佳化工具在檢索大結果集時會考慮這一開銷,並相應地放棄該非叢集索引。

不適合建非叢集索引的情況: 擷取大量資料; 低選擇性;

SQL Server索引 - 非叢集索引 <第七篇>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.