Fighting Ant

Ant can be great while elephant can be chickenshit

导航

数据库中的Index和View的理解

Posted on 2008-06-30 14:07  Nillson  阅读(1541)  评论(0编辑  收藏  举报

索引(Index)
所谓的Index就是索引其作用与书本中的索引类似,无非就是提高我们检索数据的速度。当然是需要付出一定的代价,这种代价就是数据库所占硬盘空间的增加。其实这也可以理解,我们如果要对一本字典做索引,势必要买点胶贴纸粘在书页上,书的分量增加是必然的了。
索引按照存储结构的不同分为簇索引也叫聚集索引(clustered index)和非簇索引也叫非聚集索引(unclustered index)
簇索引对表进行物理页上的重新排序,所以记录的存储顺序是会改变的,而且是永久性的改变。
非簇索引生成完全独立于数据的结构,该结构的叶结点种存储的是关键字的值和行定位器,而簇索引的叶结点存储的是实际的数据。所以俺的理解是簇索引是跟数据放在一块儿的,它把数据给重新排了个个儿。而非簇索引则是把数据的信息抽象出来用关键字值和行定位器来定位该行数据。所以他独立于数据之外来排序。对数据本身的排序没有影响。说了这么多搞得有点类似于数组跟链表的关系了。
语法:
--创建簇索引
create clustered index Index_Name
on Table_Name (Column_Name)

--创建非簇索引
create index Index_Name
on Table_Name (Column_Name)

视图(View)
简单来说视图就是存储在数据库中的查询语句。
语法:
--创建视图
create view ViewName
as select section

个人理解视图就是一部分懒人在处理复杂查询的时候好不容易想出来一个查询语句,怕以后忘了就给了个名字记住喽。所以以后再要用的时候就不需要写查询语句,而直接从视图里边得结果就完了。
图是永久存储在数据库里边的(否则懒人的目的就达不到了),对图中数据的更新会直接更新到图所映射的表中。这个也好理解,如果不能这么做,我还要这个东东干吗?但是这个功能是有限制的,那就是:该视图必须基于单个的表,并且没有group by 或者having 子句的查询。