数据库中的那些索引

来源:互联网 发布:泛雅网络教学平台答案 编辑:程序博客网 时间:2024/05/16 04:39

索引

索引是依赖于表建立的。一个表的存储是由两部分组成的:一部分用来存放表的数据页面,另一部分存放索引页面。索引就存放在索引页面上,通常索引页面相对于数据页面来说小得多。
当进行数据检索时,系统先搜索索引页面,从中找到所需数据的指针,再直接通过指针从数据页面中读取数据。从某种程度上可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息显然比没有目录的书方便快捷。
按照存储方式分为:聚集索引与非聚集索引
按照维护与管理索引角度分为:唯一索引、复合索引和系统自动创建的索引

1、聚集索引

表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大,一个表只能有一个聚集索引
语法:create NONCLUSTERED INDEX index_name ON table(column...) with 属性

2、非聚集索引

不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很少。因此,可以在一个表中创建多个非聚集索,且先建聚集索引才能创建非聚集索引。
语法:create CLUSTERED INDEX index_name on able(column...) with 属性

3、惟一索引

惟一索引可以确保索引列不包含重复的值.可以用多个列,但是索引可以确保索引列中每个值组合都是唯一的
语法: create unique index index_name on able(column...) with 属性

4、复合索引

如果在两上以上的字段上创建一个索引,则称为复合索引。这个字段的组合的取值不能重复,但是单独的字段值依然可以重复。
语法:create index indxfullname on addressbook(firstname,lastname)

5、系统自建的索引

在使用T_sql语句创建表的时候使用PRIMARY KEYUNIQUE约束时,会在表上自动创建一个惟一索引,索引可以时聚集的,也可以是非聚集的,取决于在PRIMARY KEYUNIQUE后面使用的关键字。
自动创建的索引使用drop constraint删除