SQL Server和Oracle中的索引

來源:互聯網
上載者:User

1 SQL Server中的索引

索引是與表或視圖關聯的磁碟上結構,可以加快從表或視圖中檢索行的速度。索引包含由表或視圖中的一列或多列產生的鍵。這些鍵儲存在一個結構(B樹)中,使SQL Server可以快速有效地尋找與索引值關聯的行。

表或視圖可以包含以下類型的索引:

叢集索引

叢集索引根據資料行的索引值在表或視圖中排序和儲存這些資料行。索引定義中包含叢集索引列。每個表只能有一個叢集索引,因為資料行本身只能按一個順序排序。

只有當表包含叢集索引時,表中的資料行才按排序次序儲存。如果表具有叢集索引,則該表稱為聚集表。如果表沒有叢集索引,則其資料行儲存在一個稱為堆的無序結構中。

每個表幾乎都對列定義叢集索引來實現下列功能:

1、可用於經常使用的查詢。

2、提供高度唯一性。

在建立叢集索引之前,應先瞭解資料是如何被訪問的。考慮對具有以下特點的查詢使用叢集索引:

使用運算子(如BETWEEN、>、>=、< 和 <=)返回一系列值。

使用叢集索引找到包含第一個值的行後,便可以確保包含後續索引值的行物理相鄰。例如,如果某個查詢在一系列採購訂單號間檢索記錄,PurchaseOrderNumber列的叢集索引可快速定位包含起始採購訂單號的行,然後檢索表中所有連續的行,直到檢索到最後的採購訂單號。

返回大型結果集。

使用join子句;一般情況下,使用該子句的是外鍵列。

使用ORDER BY或GROUP BY子句。

在ORDER BY或GROUP BY子句中指定的列的索引,可以使資料庫引擎 不必對資料進行排序,因為這些行已經排序。這樣可以提高查詢效能。

叢集索引不適用於具有下列屬性的列:

頻繁更改的列

這將導致整行移動,因為資料庫引擎 必須按物理順序保留行中的資料值。這一點要特別注意,因為在大容量交易處理系統中資料通常是可變的。

寬鍵

寬鍵是若干列或若干大型列的組合。所有非叢集索引將叢集索引中的索引值用作尋找鍵。為同一表定義的任何非叢集索引都將增大許多,這是因為非叢集索引項包含聚集鍵,同時也包含為此非叢集索引定義的鍵列。

聯繫我們

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