内容正文:
5.1索引
学习要点
索引
索引概述
创建索引
查看和删除索引
索引
索引概述
索引是一个单独的、物理的数据库结构
该结构中包括表中的一列或若干列的值以及相应的指向表中物理标识这些值的数据页的逻辑指针的集合
索引依赖于数据库的表,作为表的一个组成部分
一旦创建后,由数据库系统自身进行维护
存放于索引页面中
个表的存储是由两部分组成的,一部分用来存放表
的数据页面,另一部分存放索引页面
分类
学习要点
索引概述
分类
按存储结构的不同分为两类
聚集索引 (Clustered Index)
非聚集索引(Nonclustered Index)
索引概述
索引分类
聚集索引(Clustered Index)
聚集索引与数据混为一体
对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上
表的所有数据完全重新排列
一个表只能有一个聚集索引
【例5-1】
分类
索引分类
【例5-1】
在表information中查询s_no为“20021003016”的行(列s_no上已建立聚集索引)
返回
索引分类
非聚集索引(Nonclustered Index)
本索引与表的数据完全分离
无需将物理数据页中的数据按列排序 ,而是存储索引行
故使用更多存储空间(与聚集索引相比)
一个表最多可以建249 个非聚集索引
【例5-2】
分类
索引分类
【例5-2】
在表information中查询s_no为“20021003016”的行(列s_no上已建立非聚集索引)
返回
索引
创建索引
使用SSMS创建
使用T-SQL创建
学习要点
创建索引
使用SSMS创建
Step1:
选择数据表(需创建索引)→右键→“所有任务”→“管理索引”
step2
创建索引
使用SSMS创建
Step2:
“管理索引”对话框 →选择列所在的数据库和数据表(视图) →单击“新建”按钮
step3
1
2
3
创建索引
使用SSMS创建
Step3:
“新建索引”对话框 →选择需要创建索引的列 →指定索引名称 →指定“索引选项” →“确定”
创建索引
1
2
3
4
创建索引
使用T-SQL创建
基本语句格式:
示例
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]
INDEX 索引名 ON {表 | 视图 } (列 [ ASC | DESC ] [,...n])
UNIQUE
CLUSTERED
NONCLUSTERED
ASC | DESC
创建唯一索引
创建聚集索引
创建非聚集索引
创建排序方式,默认为升序(ASC)
创建索引
创建索引
示例
【例5-3】
建立关于information表的s_no列的聚集索引
【例5-4】
建立关于course表的c_no列的惟一非聚集索引
示例
CREATE CLUSTERED INDEX s_no_id
ON information(s_no)
CREATE UNIQUE NONCLUSTERED INDEX c_no_id
ON course(c_no)
创建索引
示例
【例5-5】
建立关于score表的s_no列和c_no列的复合非聚集索引
使用T-SQL创建索引
CREATE NONCLUSTERED INDEX s_c_no_id
ON score(s_no,c_no)
索引
查看和删除索引
使用SSMS
使用T-SQL
学习要点
使用SSMS
Step1:
选择数据表(需创建索引)→右键→“所有任务”→“管理索引”
step2
查看和删除索引
使用SSMS
Step2:
“管理索引”对话框 →选择列所在的数据库和数据表(视图) →选择索引 →单击“删除”按钮
查看和删除索引
查看和删除索引
查看和删除索引
使用T-SQL
查看索引
删除索引
索引优化向导(Index Tuning Wizard)
查看和删除索引
使用
查看索引
基本语句格式:
【例5-6】查看information 表的索引
返回结果
使用T-SQL
T-SQL
sp_helpindex [@objname =] 'name'
sp_helpindex information
返回所有索引信息
使用
删除索引
基本语句格式:
【例5-7】删除 course 表的 c_no_id 索引
使用T-SQL
T-SQL
DROP INDEX '表名.索引名' [,...n]
删除一个或多个当前数据库中的索引
DROP INDEX 'course.c_no_id'
此命令无法删除由CREATE TABLE 或ALTER TABLE
命令创建的PRIMARY KEY 或UNIQUE 约束索引
注意:
使用
索引优化向导(Index Tu