大型数据库——索引

什么叫索引

据库中的索引是某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

数据库中的索引与书籍中的索引类似,在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明了包含各个词的页码。

索引的作用

  • 通过创建唯一索引,可以保证数据记录的唯一性。
  • 可以大大加快数据检索速度。
  • 可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。
  • 在使用ORDER BYGROUP BY子句中进行检索数据时,可以显著减少查询中分组和排序的时间。
  • 使用索引可以在检索数据的过程中使用查询优化器,提高系统性能。

索引类型

聚集索引和非聚集索引

聚集索引:行的物理存储顺序与索引顺序完全相同,每个表只允许建立一个聚集索引。默认情况下,SQL Server为主键约束建立的索引为聚集索引。
非聚集索引:不改变表中数据行的物理存储顺序。默认情况下, SQL Server为UNIQUE约束所建立的索引为非聚集索引。
建立聚集索引随时要改变表中数据行的物理顺序,所以应在其他非聚集索引建立之前建立聚集索引,以免引起SQL Server重新构造非聚集索引。

主键索引和非主键索引

主键索引:主键创建会自动创建聚集索引。频繁更改的属性列上不适宜创建主键聚集索引,因为SQL Server要求必须按照这些属性列的值重新安排记录的物理顺序,这将导致记录的物理移动。
非主键索引:在非主键的属性列上创建的索引,这些索引一般都是非聚集索引。

唯一索引和非唯一索引

唯一索引:索引列中不包含重复值。只有当唯一性是数据本身特征时,指定唯一索引才有意义。使用唯一索引不能完全等同于使用主键(唯一索引允许一个空值)。如果某列包含多行NULL值,则不能在该列上创建唯一索引。
数据表创建唯一索引后,SQL Server将禁止INSERT语句和UPDATE语句向表中添加重复的键值行。
非唯一索引:非设置PRIMARY KEY约束或UNIQUE约束时的索引。

单列索引和复合索引

单列索引:指对表中单个列建立索引。多数情况下,单列索引是创建索引首选考虑的索引,因为单列索引代价相对较小,而对数据库查询效能提高很大。
复合索引:一个索引中包含了一个以上的列的索引。复合索引最多可以有16个列复合到一个索引中,并且这些列必须位于同一个表中,在使用复合索引检索时,把被索引的列作为一个单位。


索引的创建与删除

创建索引

1.创建索引的方法
(1)利用企业管理器或对象资源管理器直接创建索引。
(2)利用Transact-SQL语句中的CREATE INDEX命令创建索引。
语法格式:

CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ]
INDEX 索引名 
ON  数据表名|视图名( 字段名 [ ASC | DESC ] [ ,...n ] ) 
[WITH	
[PAD_INDEX]
[[,]FILLFACTOR=填充因子]
[[,]IGNORE_DUP_KEY]
[[,]DROP_EXISTING]
[[,]STATISTICS_NORECOMPUTE]
[[,]SORT_IN_TEMPDB]]
[ ON 文件组名] 

参数说明:
(1)UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。
(2)CLUSTERED:用于指定创建的索引为聚集索引。
(3)NONCLUSTERED:用于指定创建的索引为非聚集索引。
(4)ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。
(5)PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开放的空间。必须和填充因子同时使用。
(6)FILLFACTOR =填充因子:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。
(7)IGNORE_DUP_KEY:用于控制当往包含于一个唯一聚集(注:有误,非聚集索引也可使用此选项)索引中的列中插入重复数据时SQL Server所作的反应。当使用该选项,表示当插入或更新记录时,忽略重复键值。
(8)DROP_EXISTING:用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。
(9)STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算。
(10)SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。

删除索引

1.删除索引的方法
SQL Server 2000删除索引的主要方法有:利用企业管理器删除索引;利用SQL语句中的DROP INDEX命令删除索引。
(1)利用企业管理器删除索引
(2)利用SQL中的DROP INDEX命令删除索引
其语法形式如下:

DROP INDEX 表名.索引名[,…n] 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值