建立索引的目的:加快查询速度
索引类似一本书的目录,通过索引可以快速找到想要的内容。
数据库中的索引是一个表中所含的值的列表,其中注明了各个值所对应的行所在的位置。
索引是关系数据库的内部实现技术,属于数据库内模式的范畴
索引的分类
按索引的结构来分可以分为聚簇索引和非聚簇索引
- 聚簇索引:索引项的顺序与表中记录的物理存放顺序一致
- 一个表最多建立一个聚簇索引;
- 经常查询的列可以建立聚簇索引以提高查询效率;
- 经常更新的列不适合建立聚簇索引。
sqlserver默认在主键列建立聚簇索引。
- 非聚簇索引:索引中记录所对应行位置的指针
是单独的数据库对象,与表分离
sqlserver中,给一个列设定唯一约束,则自动建立非聚簇索引
按索引的功能可以分为唯一索引和非唯一索引
- 唯一索引:索引列上不允许有重复的值
- 非唯一索引:索引列上允许有重复的值
接下来是索引的建立、修改、删除
- 建立
create [unique][cluster][noncluster] index <索引名> on <表名>(<列名>[<次序>] [,<列名>[<次序>]]);
其中cluster
表示聚簇索引(sqlserver中是clustered
)
unique
表示唯一索引
次序可以是asc
或desc
,默认是asc
例如
create unique nonclustered index sname_sy on student(sname asc);
建立唯一非聚簇索引(sqlserver中)
- 修改
如果想修改索引,可以先删除再创建 - 删除
drop index 表名.索引名;
建立索引会加快查询速度,但是也会相应的减少添加、删除的速度。