程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server和Oracle中的索引

SQL Server和Oracle中的索引

編輯:關於SqlServer

1 SQL Server中的索引

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

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

聚集索引

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

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

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

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

2、提供高度唯一性。

在創建聚集索引之前,應先了解數據是如何被訪問的。考慮對具有以下特點的查詢使用聚集索引:

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

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

返回大型結果集。

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

使用ORDER BY或GROUP BY子句。

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

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

頻繁更改的列

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

寬鍵

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved