LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

在sql server中怎么理解索引、视图

admin
2012年1月14日 17:33 本文热度 2575
1.索引
索引是一个单独的,物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标志这些值的数据页的逻辑指针清单.索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法.一个表的存储是由两部分组成的,一部分是用来存放表 的数据页面,另一部分存放索引页面.索引就存放在索引页面上.
从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便,快捷.

按照上面的解释看书的目录这个比喻:
>>它实际存,占据了书的内容,纸张
>>它指向实际存在的内容。比如要找第一章,那么目录后面的页码便为
  我们提供了一个快捷的方法。当然对数据库来说,这些都是透明的我 们不能看到的。但的确提高了数据库返回给我们查询结果的效率。

另外,我们要将它与查询常用到的order by区分开。前几天公司里新员工培训曾遇到有的同学j混淆了。
所谓order by只不过是将返回的结果按要求排好顺序,方便我们的使用。它对所在的查询语句返回给我们结果是效率或其它方面(除去我们对结果的应用)是没有任何用处的。

另外有一种唯一索引,也就是主键(简单理解就是一个表中,如果在某列上建立了唯一索引,则该列不可以有两个一样的记录出现).
但唯一索引有时会使我们插入/修改数据效率降低---或说就是降低了。只是数据量小时不明显。因为每次插入/修改都会检查完所有记录,看是否有该值存在。
>>>>就像要求每个身份证号只能一人使用,那么分配一个身份证号时就要检查一下是否已经有人在用这个身份证号(当然我们现实中可能已经排好了,我们用到哪个,下一个会用哪个)

2.视图
  首先看一下一些标准的说法
  视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。

    视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。

    视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。

    视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,有些则不能(仅仅能查


  >>>如果说索引是为了效率,那么视图是为了我们使用的方便。
  >>>视图实际存在,能像对表的应用一样操作(但有限制)
  >>>所谓视图存在并不它的数据存在于视图中,而中是定义存在。它的数据仍存放在原来数据表中。就像你的档案有你的完整描述(假设这就是定义)虽然它能代表你,能在你上面反应一些k事(如给你记过的处分)但你本身并不在这。你实际也许现在正在国外呢.
  >>>
  >>>如果把视图比喻一下,就像你从指缝中只看你想看的人或东西。
比如你只想看你前面三个人的手里是不是有钱包,你从指缝里看到它们的手就是一个视图。而对其它数据不关心。

  >>>现用库表来说一下。学生表有许多描述学生的信息。成绩表有许多课目的成绩。你只想列出名字,学号,课目,成绩。那么你至少有两种三种方法:
   》》》1.再建一个表存这些数据。显然这会占空间,而且你在更新那两个表时也要更新这个表,很容易忘记。
   》》》2.用查询语句查出结果。但要每次操作(当然可以写存储过程--但不能对结果再操作;;;也可以写临时表---但对它的操作也不方便)
   》》》3.建视图。把需要的数据的定义放到视图中,以后查询可以直接用这个视图名,如同用表名一样。

注意:前面讲到并不是所有对视图的操作都会完成对原表的操作。一个简单的例子,,视图某一列(金额)由(单价*数量)获得,更新视图的金额这一列,如100改成200,则多出100,但数据库并不知道如何把这100分给单价还是数量。

该文章在 2012/1/14 17:33:35 编辑过

全部评论2

admin
2012年1月14日 17:33
索引是为了提升数据查询性能,视图一般用于给用户提供一个统一的接口而屏蔽掉无用或需要保密的信息。
一般来说,如果数据量不是太大,比如只有几万条记录,不需要建索引,索引本身也是一种数据,系统为了维护索引,是需要开销的。如果数据量非常大,就一定会用到索引技术。比如上百万、几千万的数据量。此时如果在数据表上没有索引,数据查询会非常慢。索引其实就是预先给数据排序,比如身份证号,如果在这个字段上有索引,那么从大到小都已经有序了,需要查询某一个号码,系统可以很快检索到对应的数据。
在数据库中,不是每一个级别的用户都需要全部信息,在某些时候,有些敏感的信息甚至只能给具有合适权限的人员,即便用户进入了数据库(不是指的程序界面检索,而是直接进入了数据库管理系统),也不可以让他查看全部信息,此时就可以用视图的方法,让用户只能查看他应该看的信息,真正的基础表屏蔽起来。

该评论在 2012/1/14 17:34:11 编辑过
admin
2012年1月14日 17:35
索引当然是建在表上,索引是为了提高查询速度提供的一种方式,使用不当会有可能降低速度,索引建好了,当查询条件中where后面使用到的列名上有索引,数据库会自动使用索引 . 视图想当于一张虚拟表,因为通常习惯将多表连接查询的结果作为视图方便查询,视图里的数据是只读的,不能做增改删查,但可以通过触发器作到相同效果

该评论在 2012/1/14 17:35:14 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved