索引
數(shù)據(jù)庫中的索引與書籍中的索引類似,在一本書中,利用索引可以快速查找所需信息,無須閱讀整本書。在數(shù)據(jù)庫中,索引使數(shù)據(jù)庫程序無須對整個表進行掃描,就可以在其中找到所需數(shù)據(jù)。書中的索引是一個詞語列表,其中注明了包含各個詞的頁碼。而數(shù)據(jù)庫中的索引是某個表中一列或者若干列值的集合和相應(yīng)的指向表中物理標識這些值的數(shù)據(jù)頁的邏輯指針清單。
索引的類型:
1. 聚集索引和非聚集索引
2. 主鍵索引和非主鍵索引
3. 唯一索引和非唯一索引
4. 單列索引和復(fù)合索引
1. 創(chuàng)建索引
CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ]
INDEX 索引名
ON 數(shù)據(jù)表名|視圖名( 字段名 [ ASC | DESC ] [ ,...n ] )
參數(shù)說明:
UNIQUE:用于指定為表或視圖創(chuàng)建唯一索引,即不允許存在索引值相同的兩行。
CLUSTERED:用于指定創(chuàng)建的索引為聚集索引。
NONCLUSTERED:用于指定創(chuàng)建的索引為非聚集索引。
ASC|DESC:用于指定具體某個索引列的升序或降序排序方向。
(1) 為學(xué)生表的學(xué)號列創(chuàng)建非聚集索引IX1
create nonclustered index IX1 on 學(xué)生表(學(xué)號)
(2) 為老師表的工號列創(chuàng)建唯一性索引IX2
create unique index IX2 on 教師表(工號)
(3) 為開課表的開課號和工號創(chuàng)建唯一性非聚集索引IX3(開課號升序,工號降序)
create unique nonclustered index IX3 on 開課表(開課號 asc,工號 desc)
(4) 查看所創(chuàng)建的索引信息
use 教學(xué)管理 EXEC Sp_helpindex 學(xué)生表
use 教學(xué)管理 EXEC Sp_helpindex 教師表
use 教學(xué)管理 EXEC Sp_helpindex 開課表
(5) 為數(shù)據(jù)庫“教學(xué)管理”中的數(shù)據(jù)表關(guān)于“選課表.成績”降序建立非聚集索引IX_選課表_成績。
USE 教學(xué)管理
GO
IF EXISTS (SELECT name FROM sysindexes WHERE name=‘IX_選課表_成績’)
DROP INDEX 選課表.IX_選課表_成績
CREATE NONCLUSTERED INDEX IX_選課表_成績 ON 選課表(成績 DESC)
2. 刪除索引
DROP INDEX 表名.索引名[,…n]
(1) 刪除所創(chuàng)建的索引
drop index 學(xué)生表.IX1,教師表.IX2,開課表.IX3