1. 程式人生 > >數據庫優化之創建索引

數據庫優化之創建索引

索引 sql 楊書凡

索引提供指針以指向存儲在表中指定列的數據,然後根據指定的次序排列這些指針,在根據指針到達包含該值的行


什麽是索引

數據庫中的索引和數據的目錄相似,利用目錄快速查找所需的信息。在數據庫中,索引是某個表中一列或者若幹列值的集合,以及物流標識這些值的數據頁的邏輯指針清單。是SQL Server編排數據的內部方法,通過索引,可快速查找數據,而無需掃描整個表

索引頁是數據庫中存儲索引的數據頁,存放數據行的關鍵字頁以及該數據行的地址指針


索引分類

在SQL Server中,常見的索引有以下六類:

唯一索引:不允許兩行具有相同的索引值

主鍵索引:要求主鍵中每個值是唯一的

聚集索引:數據存放的物理順序與索引順序相同

非聚集索引:數據存放的物理順序與索引順序不相同

復合索引:將多個列組合而成的索引

全文索引:一種特殊類型的基於標記的功能性索引

註意:在SQL Server中,一個表只能創建一個聚集索引,但可以創建多個非聚集索引。設置某列為主鍵,該列就默認為聚集索引


創建索引

創建索引的方法有兩種:使用SSMS和T-SQL語句

(1)使用SSMS創建索引

可以展開表,選擇“新建索引”,也可以右擊表,選擇“設計”,右擊列,選擇“索引/鍵”,創建索引

技術分享圖片

技術分享圖片


(2)使用T-SQL語句創建索引

創建聚集索引語法:

create clustered index 索引名 on 表名(列名)

技術分享圖片


創建非聚集索引語法:

create [nonclustered] index 索引名 on 表名(列名)

技術分享圖片


創建唯一索引

create unique [clustered|nonclustered] index 索引名 on 表名(列名)

技術分享圖片


刪除索引

drop index 索引名 on 表名


索引的選擇原則

使用索引可加快數據檢索速度,但為每個列都建立索引沒有必要。因為索引自身也需要維護,並占用一定的資源,可以按照以下標準選擇建立索引的列

* 頻繁搜索、查詢選擇的列

* 經常排序、分組的列

* 經常用於連接的列(主鍵、外鍵)


不要使用下面的列建立索引,因為索引所花的時間比在表中逐行搜索的時間更長

* 僅包含幾個值的列

* 表中僅包含幾行




數據庫優化之創建索引