(1)在SQL Server Management Studio中,選擇並右擊要創建索引的表,從彈出菜單中選擇“設計”,打開表設計器。右鍵單擊表設計器,從彈出菜單中選擇“索引/鍵”命令,打開“索引/鍵”對話框。對話框中列出了已經存在的索引,如下圖所示。
(2)單擊“添加”按鈕。在“選定的主/唯壹鍵或索引”框顯示系統分配給新索引的名稱。
(3)在“列”屬性下選擇要創建索引的列。可以選擇多達16列。為獲得最佳性能,最好只選擇壹列或兩列。對所選的每壹列,可指出索引是按升序還是降序組織列值。
(4)如果要創建唯壹索引,則在“是唯壹的”屬性中選擇“是”。
(5)設置完成後,單擊“確定”按鈕。
(6)當保存表時,索引即創建在數據庫中。
使用CREATE INDEX語句創建索引:
復制內容到剪貼板
代碼:
CREATE[ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX索引名
ON {表名|視圖名} (列名[ ASC | DESC ] [ ,...n ] )
例:
在數據庫HrSystem中為表Employees創建基於IDCard列的唯壹索引IX_Employees,可以使用以下命令:
復制內容到剪貼板
代碼:
USE HrSystem
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Employees]ONdbo.Employees(IdCard)
GO
例:
為表Employees創建基於列IDCard的唯壹、聚集索引IX_Employees1,可以使用以下命令:
復制內容到剪貼板
代碼:
USE HrSystem
GO
CREATE UNIQUE CLUSTERED INDEX [IX_Employees1] ON [dbo].[Employees](IdCard)
GO
需要註意的是,在壹個表中只允許存在壹個聚集索引。因此,如果表Employees中已經存在壹個聚集索引,則執行上面的語句時將會提示下面的錯誤信息。
消息1902,級別16,狀態3,第1行
無法對表'dbo.Employees'創建多個聚集索引。請在創建新聚集索引前刪除現有的聚集索引'PK__Employee__263E2DD300551192'。 例:
對表Employees的列Emp_name按照降序創建索引,可以使用以下命令:
復制內容到剪貼板
代碼:
USE HrSystem
GO
CREATENONCLUSTERED INDEX [IX_Employees2] ON [dbo].[Employees]
(
[Emp_name] DESC
)
GO
在CREATE INDEX語句中使用INCLUDE子句,可以在創建索引時定義包含的非鍵列,其語法結構如下:
復制內容到剪貼板
代碼:
CREATENONCLUSTERED INDEX 索引名
ON { 表名| 視圖名 } ( 列名 [ ASC | DESC ] [ ,...n ] )
INCLUDE (<列名1>, <列名2>, [,… n])
例: 在表Employees上創建非聚集索引IX_Wage,索引中的鍵列為Wage,非鍵列為Emp_name、Sex和Title,具體語句如下:
復制內容到剪貼板
代碼:
USEHrSystem
GO
CREATENONCLUSTERED INDEX IX_Wage
ON Employees ( Wage )
INCLUDE (Emp_name, Sex, Title)
GO
例: 在創建索引IX_Wage後,當表Employees中的數據量比較大時,執行下面的SELECT語句將會明顯地改進查詢效率。
復制內容到剪貼板
代碼:
USEHrSystem
GO
SELECTEmp_name, Sex, Title, Wage
FROMEmployees
WHEREWage BETWEEN 1000 AND 3000
GO