zoukankan      html  css  js  c++  java
  • 6SQL SERVER视图/索引

    一.视图

    1.视图概念

      ①视图是包含由一张或多张表的列组成的数据集。该表中的记录是由一条查询语句执行后所得到的查询结果所构成的。

      ②视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数 据,其结构和数据是建立在对表的查询基础上。

      ③视图中并不存放数据,而是存放在视图所引用的原始表(基表)中。

      ④同一张原始表,根据不同用户的不同需求,可以创建不同的视图。

    2.视图的用途

      ①筛选表中的行

      ②防止未经许可的用户访问敏感数据

      ③降低数据库的复杂程度

      ④将多个物理数据库抽象为一个逻辑数据库。

    3.使用视图的好处

      ①限制用户只能存取表内特定的列

      ②不用重新建表即可存取想要的数据

      ③省略复杂的select命令和表间的连接产生数据,直接使用视图即可得到相关的数据

    创建视图时,需注意的情况:

      (1)只能在当前数据库中创建视图,在视图中最多只能引用1024列,视图中记录数目限制只有其基表中的记录数决定。

      (2)视图名称必须遵循标识符的原则,且对每个用户必须唯一。此名称不得与用户拥有的任何表的名称相同。

      (3)如果视图引用的基表或视图被删除,则该视图不能再被引用,直到创建新的基表或视图。

      (4)如果视图中某一列是函数、数学表达式、常量或来自多张表的列名相同,则必须为列定义名称。

      (5)不能在视图上常见索引、不能在规则/默认/触发器的定义中引用视图。

      (6)过视图查询数据时,要确保语句中涉及的数据库对象存在,每个数据库对象在语句的上下文中有效,且数据修改语句不能违反数据完整性规则。

    4.创建视图

    创建视图语法:

    create view view_name [(column_list)]
    
      as
    
      select_statement(select 语句)
    • view_name:为新创建的视图指定名称
    • column_list:当前表中列的名称
    • select_statement:定义了一张或多张表中检索出行和列的select语句

    注意:在视图中的select语句不能包含order by或into子句,另外在查询中不能引用临时表

    5.使用视图的优点:

      (1)视点集中、(2)、简化操作(3)、定制数据(4)、合并分割数据(5)、安全性:视图可作为一种安全机制

    二、索引

      1.索引的定义:

        索引是一个单独的、物理的数据库结构,是数据库的一张表中所包含的值得列表,其中注明了表的各个值所在的存储位置。索引依赖于表的建立,提供了编排表中的方法。

         2.索引的类型:

        (1)、主键索引:

           在数据库中为表定义一个主键就自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求每一个值都是唯一。在查询中使用主键索引能提高访问数据的速度。

        (2)、聚集索引与非聚集索引:

            聚集索引是基于记录内容在数据表内的排序和存储。在设置聚集索引时,数据表中的数据也会按照索引的顺序来存放。

           非聚集索引与聚集索引的最大区别是:不会为数据表列的数据进行物理上的排序,只是将索引建立在索引页上。

         (3)、唯一索引

          唯一索引能确保索引无重复。

       !注意:唯一性约束所在的列允许空值,但主键约束所在的列不允许空值。

     3.创建索引需要注意的事项:

          (1)、最好对空表创建索引,建议应在创建表的同时设置索引

         (2) 、如果既要创建聚集索引又要创建非聚集索引,那么最好先创建聚集索引,再创建非聚集索引。

       !注意:如果在创建表时已设置了主键,则数据表会自动生成了一个主键索引。

     4.创建索引

     

    create [unique] [clustered | nonclustered] index index_name
    on table_name(column_name[,....])
            [with
              fillfactor=fillfactor
            ]     

      其中各个参数的含义如下:

      unique:用来指定所要创建的索引是否是唯一索引,建立唯一索引的字段中不能有重复数据。

      clustered | nonclustered:指定clustered来创建聚集索引,使用nonclustered来创建非聚集索引,两者不能同时使用。每一张表只能创建一个聚集索引,但每一张表可以创建249个非聚集索引。

      index_name:为新创建的索引指定名称,索引名要符合命名规范。

      table_name:创建索引的表的名称。

      coloum_name:索引中包含列的名称。

      fillfacor:指定索引页的填充率,指示该索引页填充空间所占百分比。

       !注意:在删除索引时,必须为drop index语句指定表明和索引名。

      创建索引示例:

      

    /*使用索引,指定按索引index_cardInfo_CardBalance进行查询*/
    
    select  *  from cardInfo
        with(index=index_cardInfo_CardBalance)
            where CardBalance between 10 and 100 --查询在10到100元间的余额

      5.索引的优缺点:

         优点:

        (1)、创建唯一性索引,保证数据库表中每一行数据的唯一性。

        (2)、大大加快数据的检索速度,这是创建索引的最主要原因

        (3)、加速表与表之间的连接,特别是在实现数据的参照完整性方面

        (4)、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间

        (5)、通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能

        缺点:

        (1)、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

        (2)、索引要占物理空间,如果创建索引,那么需要的空间就更大

        (3)、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

  • 相关阅读:
    Application Cache
    log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具
    configsections規範配置信息
    Winform後台如何動態修改App.config文件里的內容
    運行程式時提示丟失api-ms-win-crt-runtime-l1-1-0.dll
    Extjs4对Model定义相关的校验内容
    liferay 集成ldap
    liferay和cas系统集成
    DOM获得所有元素的节点
    核心Element对象
  • 原文地址:https://www.cnblogs.com/chef5-3/p/3133689.html
Copyright © 2011-2022 走看看