——————————————使用

來源:互聯網
上載者:User

使用叢集索引和非叢集索引的區別

 

使用叢集索引

    叢集索引確定表中資料的物理順序。叢集索引類似於電話簿。由於叢集索引規定資料在表中的實體儲存體順序,因此一個表只能包含一個叢集索引。但該索引可以包含多個列(複合式索引),就像電話簿按姓氏和名字進行組織一樣。

叢集索引對於那些經常要搜尋範圍值的列特別有效。使用叢集索引找到包含第一個值的行後,便可以確保包含後續索引值的行在物理相鄰。避免每次查詢該列時都進行排序,從而節省成本。

注意事項
定義叢集索引鍵時使用的列越少越好。
1、包含大量非重複值的列。
2、使用下列運算子返回一個範圍值的查詢:BETWEEN、>、>=、< 和 <=。
3、被連續訪問的列。
4、返回大型結果集的查詢。
5、經常被使用聯結或 GROUP BY 子句的查詢訪問的列;一般來說,這些是外鍵列。對 ORDER BY 或 GROUP BY 子句中指定的列進行索引,可以使 SQL Server 不必對資料進行排序,因為這些行已經排序。這樣可以提高查詢效能。
6、OLTP 類型的應用程式,這些程式要求進行非常快速的單行尋找(一般通過主鍵)。應在主鍵上建立叢集索引。

叢集索引不適用於:

1、頻繁更改的列 。這將導致整行移動(因為 SQL Server 必須按物理順序保留行中的資料值)。這一點要特別注意,因為在大資料量交易處理系統中資料是易失的。

2、寬鍵 。來自叢集索引的索引值由所有非叢集索引作為尋找鍵使用,因此儲存在每個非叢集索引的葉條目內。

使用非叢集索引

非叢集索引與課本中的目錄類似。資料存放區在一個地方,索引儲存在另一個地方,索引帶有指標指向資料的儲存位置。索引中的項目按索引索引值的順序儲存,而表中的資訊按另一種順序儲存(這可以由叢集索引規定)。如果在表中未建立叢集索引,則無法保證這些行具有任何特定的順序。

多個非叢集索引
有些書籍包含多個索引。例如,一本介紹園藝的書可能會包含一個植物通俗名稱索引,和一個植物學名索引,因為這是讀者尋找資訊的兩種最常用的方法。對於非叢集索引也是如此。可以為在表中尋找資料時常用的每個列建立一個非叢集索引。

注意事項

在建立非叢集索引之前,應先瞭解您的資料是如何被訪問的。可考慮將非叢集索引用於:
? 包含大量非重複值的列,如姓氏和名字的組合(如果叢集索引用於其它列)。如果只有很少的非重複值,如只有 1 和 0,則大多數查詢將不使用索引,因為此時表掃描通常更有效。
? 不返回大型結果集的查詢。
? 返回精確匹配的查詢的搜尋條件(WHERE 子句)中經常使用的列。
? 經常需要聯結和分組的決策支援系統應用程式。應在聯結和分組操作中使用的列上建立多個非叢集索引,在任何外鍵列上建立一個叢集索引。
? 在特定的查詢中覆蓋一個表中的所有列。這將完全消除對錶或叢集索引的訪問。

索引都是一種排序,只是叢集索引的排序和物理表中的資料排序相同,一致的;而非叢集索引的排序和物理表資料的排序不同。

當我們在更新統計資料的時候,對於那些叢集索引列不但要更新索引頁還要同時對資料物理表資料重新排序;而對非叢集索引列則只需要更新索引頁
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.