在sql server中怎么理解索引、视图
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
1.索引
索引是一个单独的,物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标志这些值的数据页的逻辑指针清单.索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法.一个表的存储是由两部分组成的,一部分是用来存放表 的数据页面,另一部分存放索引页面.索引就存放在索引页面上. 从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便,快捷. 按照上面的解释看书的目录这个比喻: >>它实际存,占据了书的内容,纸张 >>它指向实际存在的内容。比如要找第一章,那么目录后面的页码便为 我们提供了一个快捷的方法。当然对数据库来说,这些都是透明的我 们不能看到的。但的确提高了数据库返回给我们查询结果的效率。 另外,我们要将它与查询常用到的order by区分开。前几天公司里新员工培训曾遇到有的同学j混淆了。 所谓order by只不过是将返回的结果按要求排好顺序,方便我们的使用。它对所在的查询语句返回给我们结果是效率或其它方面(除去我们对结果的应用)是没有任何用处的。 另外有一种唯一索引,也就是主键(简单理解就是一个表中,如果在某列上建立了唯一索引,则该列不可以有两个一样的记录出现). 但唯一索引有时会使我们插入/修改数据效率降低---或说就是降低了。只是数据量小时不明显。因为每次插入/修改都会检查完所有记录,看是否有该值存在。 >>>>就像要求每个身份证号只能一人使用,那么分配一个身份证号时就要检查一下是否已经有人在用这个身份证号(当然我们现实中可能已经排好了,我们用到哪个,下一个会用哪个) 2.视图 首先看一下一些标准的说法 视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。 视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。 视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,有些则不能(仅仅能查 >>>如果说索引是为了效率,那么视图是为了我们使用的方便。 >>>视图实际存在,能像对表的应用一样操作(但有限制) >>>所谓视图存在并不它的数据存在于视图中,而中是定义存在。它的数据仍存放在原来数据表中。就像你的档案有你的完整描述(假设这就是定义)虽然它能代表你,能在你上面反应一些k事(如给你记过的处分)但你本身并不在这。你实际也许现在正在国外呢. >>> >>>如果把视图比喻一下,就像你从指缝中只看你想看的人或东西。 比如你只想看你前面三个人的手里是不是有钱包,你从指缝里看到它们的手就是一个视图。而对其它数据不关心。 >>>现用库表来说一下。学生表有许多描述学生的信息。成绩表有许多课目的成绩。你只想列出名字,学号,课目,成绩。那么你至少有两种三种方法: 》》》1.再建一个表存这些数据。显然这会占空间,而且你在更新那两个表时也要更新这个表,很容易忘记。 》》》2.用查询语句查出结果。但要每次操作(当然可以写存储过程--但不能对结果再操作;;;也可以写临时表---但对它的操作也不方便) 》》》3.建视图。把需要的数据的定义放到视图中,以后查询可以直接用这个视图名,如同用表名一样。 注意:前面讲到并不是所有对视图的操作都会完成对原表的操作。一个简单的例子,,视图某一列(金额)由(单价*数量)获得,更新视图的金额这一列,如100改成200,则多出100,但数据库并不知道如何把这100分给单价还是数量。 该文章在 2012/1/14 17:33:35 编辑过
|
关键字查询
相关文章
正在查询... |