文章目錄
1.索引介紹
索引是一種重要的數據庫對象,它可以和基本表或者視圖建立關聯。當表的數據量比較大時,查詢操作會比較耗時。建立索引是加快查詢速度的有效手段。數據庫索引類似於圖書後面的索引,能快速定位到需要查詢的內容。用戶可以根據應用環境的需要,在基本表上建立一個或多個索引,以提供多種存取路徑,加快查找速度。
在SQL Server 2012中,索引主要有聚集索引和非聚集索引兩種。
1. 聚集索引
聚集索引定義中包含聚集索引列。聚集索引根據數據行的鍵值在表或視圖中排序來存儲這些數據行。因此數據表的物理存儲順序和索引是一致的。每個表有且只能有一個聚集索引,因爲數據行本身只能按一個順序進行排序。
2. 非聚集索引
非聚集索引具有獨立於數據行的結構。非聚集索引包含非聚集索引鍵值,並且每個鍵值項都有指向包含該鍵值的數據行指針。從非聚集索引中的索引行指向數據行的指針稱爲行定位器,行定位器的結構取決於數據頁是存儲在堆中還是聚集表中,對於堆,行定位器是指向行的指針,對於聚集表,行定位器是聚集索引鍵。
2.創建索引
①創建非聚集索引
使用SSMS工具
- 在數據庫中,打開需要創建索引的數據表,右擊“索引”,選擇新建索引。
- 選擇“非聚集索引”,進入“新建索引”對話框
- 在“索引名稱”中輸入需要新建的索引名
- 在“索引鍵列”中單擊“添加”按鈕,彈出選擇列窗口,選擇需要設爲索引的屬性列,點擊確定返回
- 點擊確定,在“索引”中可以看到索引創建成功。
使用SQL方式
語法格式:
CREATE [NONCLUSTERED] INDEX <索引名>
ON <視圖或數據表>(屬性列)
使用示例:爲student表中的StuName屬性建立非聚集索引
create nonclustered index IX_student_StuName
on student(StuName)
②創建聚集索引
使用SSMS工具
- 在數據庫中,打開需要創建索引的數據表,右擊“索引”,選擇新建索引。
- 選擇“聚集索引”,進入“新建索引”對話框
- 在“索引名稱”中輸入需要新建的索引名
- 在“索引鍵列”中單擊“添加”按鈕,彈出選擇列窗口,選擇需要設爲索引的屬性列,點擊確定返回
- 點擊確定,在“索引”中可以看到索引創建成功。
使用SQL方式
語法格式:
CREATE CLUSTERED INDEX <索引名>
ON <視圖或數據表>(屬性列)
使用示例:爲student表中的StuID屬性建立聚集索引
create clustered index IX_student_StuID
on student(StuID)
3.索引啓用與禁用
禁用索引可以防止用戶訪問索引,對於非聚集索引,則可以防止用戶訪問基本表數據。索引被禁用後會一直保持禁用狀態,直到它被重新生成或被刪除。
禁用索引
使用SSMS工具
- 右擊需要禁用的索引名,選擇禁用
- 彈出“禁用索引”對話框,點擊確定,即可禁用索引。右擊索引,選擇屬性,可以看到索引已被禁用
使用SQL方式
語法格式:
ALTER INDEX <索引名>
ON <數據表或視圖> DISABLE
使用示例:禁用IX_student_StuName索引
alter index IX_student_StuName
on student disable
啓用索引
使用SSMS工具
- 右擊需要啓用的索引名,選擇“重新生成”
- 彈出“重新生成索引”對話框,點擊確定
- 右擊索引,選擇“屬性”,可以看到索引處於就緒狀態。
使用SQL方式
語法格式:
ALTER INDEX <索引名>
ON <數據表或視圖> REBUILD
使用示例:禁用IX_student_StuName索引
alter index IX_student_StuName
on student rebuild
4.查看索引
語法格式:
--查看數據表或視圖中的索引
SP_HELPINDEX <數據表或視圖>
使用示例:查看student表中的索引
use schoolDB
go
sp_helpindex student
5.刪除索引
使用SSMS工具
- 選擇需要刪除的索引,右擊,選擇刪除
- 彈出刪除對象對話框,點擊確定,即可完成索引刪除
使用SQL方式
語法格式:
DROP INDEX <索引名> ON <數據表或視圖>
使用示例:刪除student表中的IX_student_StuName索引
drop index IX_student_StuName
on student