SQL Server之索引

简单来说,索引就是一个指针,指向表里的数据。
创建索引
create indext index_name on table_name
删除索引
drop index index_name on table_name
索引的类型
单字段索引
create indext index_name on table_name(column_name)
如果某个字段单独在Where子句作为单独的查询条件,它的单字段索引是最有效的。
唯一索引

create unique indext index_name on table_name(column_name)
唯一索引不允许表里有重复值,且column_name不能是主键。
组合索引

create indext index_name on table_name(column1,column2)
组合索引是基于一个表里两个或多个字段的索引
隐含索引

是数据库服务程序在创建对象时自动创建的。比如,数据库会给主键约束和唯一性约束自动创建索引。
为什么给这些约束自动创建索引?
从一个数据库服务程序的角度来看,当管理员向数据库添加一列新信息时,主键是唯一的。为了有效地检查新值在数以千计的
记录里是唯一的,表里的主键列必须被索引。因此,在创建主键或唯一性约束时,数据库会自动给他们创建索引。
聚集索引和非聚集索引
根据索引的顺序与数据表的物理顺序是否相同,可以把索引分为聚集索引和非聚集索引。
例如:字典的目录就是一种索引,因为通过目录我们可以很快的定位到要检索的内容,而不是从头到尾把字典翻一遍。汉语字典
一般都提供两种目录,一种是拼音目录,另一种是偏旁部首目录。汉语字典是按照拼音的顺序排列的,因此拼音目录就是聚集索引,
而偏旁部首目录是非聚集索引,
每一个表都只有一个聚集索引,因为表中数据的物理顺序只有一个,而非聚集索引则可以创建多个。
索引的小知识
索引是数据库调优的最根本的方法,很多优化手法都是围绕索引展开的,可以说索引是一切优化手法的“内功”,而所有的优化

手法都是由索引衍化出来的招式而已。 
但是由于索引需要占据一定的存储空间,而且索引也会降低数据插入、删除和更新的速度,所以应该只创建必要的索引,一般是
在检索的时候用的字段中创建索引。
索引还会造成存储碎片的问题。当删除一条记录时,将会导致对应的索引中的该记录的对应项为空,由于索引是采用B树结构存储,
所以对应的索引项不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这些存储碎片不仅占用了存储
空间,而且降低了数据库运行的速度。那么怎么处理这些存储碎片呢?最方便的手段就是重建索引,重建索引会将先前创建的索引
删除然后重新创建索引,主流数据库管理系统都提供了重建索引的功能,比如reindex,rebuild等,如果没有提供重建索引功能,可以
首先用drop index语句删除索引,然后用alter table语句重新创建索引。

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>