索引提供指針以指向存儲在表中指定列的數據,而後根據指定的次序排列這些指針,在根據指針到達包含該值的行數據庫
什麼是索引ide
數據庫中的索引和數據的目錄類似,利用目錄快速查找所需的信息。在數據庫中,索引是某個表中一列或者若干列值的集合,以及物流標識這些值的數據頁的邏輯指針清單。是SQL Server編排數據的內部方法,經過索引,可快速查找數據,而無需掃描整個表spa
索引頁是數據庫中存儲索引的數據頁,存放數據行的關鍵字頁以及該數據行的地址指針設計
索引分類指針
在SQL Server中,常見的索引有如下六類:排序
惟一索引:不容許兩行具備相同的索引值索引
主鍵索引:要求主鍵中每一個值是惟一的資源
彙集索引:數據存放的物理順序與索引順序相同it
非彙集索引:數據存放的物理順序與索引順序不相同class
複合索引:將多個列組合而成的索引
全文索引:一種特殊類型的基於標記的功能性索引
注意:在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 表名
索引的選擇原則
使用索引可加快數據檢索速度,但爲每一個列都創建索引沒有必要。由於索引自身也須要維護,並佔用必定的資源,能夠按照如下標準選擇創建索引的列
* 頻繁搜索、查詢選擇的列
* 常常排序、分組的列
* 常常用於鏈接的列(主鍵、外鍵)
不要使用下面的列創建索引,由於索引所花的時間比在表中逐行搜索的時間更長
* 僅包含幾個值的列
* 表中僅包含幾行