第六章SQLServer 2012 索引
数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
一、索引的优点
1.创建唯一性索引,保证数据库表中每一行数据的唯一性
2.大大加快数据的检索速度,这也是创建索引的最主要的原因
3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
二、索引的缺点
1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。
3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
三、索引的分类
1、聚集索引
聚集索引是指数据行在表中的物理存储顺序。当为一个表的某列创建聚集索引时,表中的数据会按该列进行重新排序,然后再存储到磁盘上。因此,每个表只能创建一个聚集索引。
2、非聚集索引
非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。
四、索引的操作
(1)、使用对象资源管器创建索引
在“对象资源管理器“窗口中,选择要建立索引的表,然后展开表结点,右击“索引”结点,在弹出的菜单中选择“新建索引”。
(2)、使用CREATEINDEX 语句在查询分析器中创建索引
CREATE[UNIQUE][CLUSTERED][NONCLUSTERED] INDEX 索引名
ON表名(列名)
[UNIQUE] [CLUSTERED] [NONCLUSTERED]
唯一索引 聚集索引 非聚集索引
SQLServer 2005 索引
五、查看索引信息
在对表创建了索引后,可以根据实际情况,查看表中索引信息。在“对象资源管理器”窗口中,或系统存储过程sp_helpindex 都可以查看到索引信息。
1、使用对象资源管器查看索引信息
右击表中已建的索引,选择属性,打开“索引属性”。
2、使用系统存储过程查看索引信息
sp_helpindextable_name 查看索引信息
六、删除索引
使用索引虽然可以提高查询效率,但是对一个表来说,如果索引过多,不但耗费磁盘空间,而且在修改表中记录时会增加服务器维护索引的时间。当不再需要某个索引的时候,应该把它从数据库中删除,这样,既可以提高服务器效,又可以回收被索引占用的存储空间。
1、使用对象资源管理器删除索引
展开“表”结点,再展开“索引”结点,右击要删除的索引。
2、便用SQL语句删除索引
DROPINDEX 表名.索引名
七、谈谈唯一约束和唯一索引
最近在看数据库相关知识,感觉唯一约束和唯一索引好像有点类似,于是研究了一番,于是就有了这篇文章。
约束 全称完整性约束,它是关系数据库中的对象,用来存放插入到一个表中一列数据的规则,用来确保数据的准确性和一致性。
索引 数据库中用的最频繁的操作是数据查询,索引就是为了加速表中数据行的检索而创建的一种分散的数据结构。可以把索引类比成书的目录,有目录的肯定比没有目录的书,更方便查找。
唯一约束 保证在一个字段或者一组字段里的数据都与表中其它行的对应数据不同。和主键约束不同,唯一约束允许为NULL,只是只能有一行。
唯一索引 不允许具有索引值相同的行,从而禁止重复的索引或键值。
唯一约束和唯一索引都是为了保证表中被限制的字段不允许有重复的值,看起来功能是一样的,那为什么要设计这样两种一样的功能呢?
探究
唯一键键约束只是作为一种独特的约束(如主键约束,唯一键约束,check约束,外键约束的一种),以约束的形式管理.但是同时又自动创建了唯一非聚集索引,也就有了索引的性能和部分功能.实际上唯一键约束是用唯一索引来约束的。
唯一索引就是一种索引,它对某字段进行唯一性检查,同时可以设置各种参数,非常灵活。
那么我们在创建列的唯一性时,到底使用哪一种较好呢?(个人理解)
唯一键约束在表中是必定存在的约束的,唯一键约束的索引存在于一个分区中,并且不会像索引那样可以更改。因为索引可以随时改动(当然也不会经常改动),索引个人建议还是用唯一索引更灵活。管理约束还得管理索引,而管理索引,一个就好了。但是对于一些高可用性,也要注意索引是否在其他地方也存在。
