SQL 索引
索引是对数据库表中一个或多个列的值进行排序的结构,其主要目的是提高SQL SERVER系统的性能,加快数据的查询速度和减少系统的响应时间。
索引分为: a.聚集索引. 会对表和视图进行物理排序,这种索引对查询非常有效,在表和视图中只能有一个聚集索引.实际情况一般为定义成主键约束的列建立聚集索引。
b.非聚集索引. 不会对表和视图进行物理排序。
创建索引时应该考虑的问题:
a.索引是动态维护的,避免对经常更新的表建立过多的索引,对更新较少而且数据量大的表创建多个索引.
b.对小型表进行索引不会产生优化效果.
c.对于主键和外键应考虑建索引,因为经常通过主键查询数据,而外键用于表间的连接.
d.很少在查询中使用的列以及值很少的列不应该考虑。
e.视图中如果包含聚集函数或连接时,创建视图的索引可以显著提升查询性能。
语法:
create [unique][clustered][nonclustered]
index index_name
on {table_name | view_name} (column_name [ASC | DESC][,.....n] )
[with <index_option>[,....]]
删除索引:
drop index index_name on table_name
聚簇索引与非聚簇索引的本质区别:
聚簇索引的叶节点就是数据节点,而非聚簇索引的页节点仍然是索引检点,并保留一个链接指向对应数据块。
还是通过一道数学题来看看它们的区别吧:假设有一8000条记录的表,表中每条记录在磁盘上占用1000字节,如果在一个10字节长的字段上建立非聚簇索引主键,需要二叉树节点16000个(这16000个节点中有8000个叶节点,每个页节点都指向一个数据记录),这样数据将占用8000条×1000字节 /8K字节=1000个页面;索引将占用16000个节点×10字节/8K字节=20个页面,共计1020个页面。
同样一张表,如果我们在对应字段上建立聚簇索引主键,由于聚簇索引的页节点就是数据节点,所以索引节点仅有8000个,占用10个页面,数据仍然占有1000个页面。
详解:http://kb.cnblogs.com/page/44125/
浙公网安备 33010602011771号