• 优化MySchool数据库(事务、视图、索引)


    事务、视图、索引:

            事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“。

            视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写)

            索引:提高“数据检索效率”

     

    事务:

          ---- 用于保证多条SQL语句的同步执行(要么一起全部执行成功,要么全部都回滚不执行)

          ---- 语法:

                          Begin Transaction        (开始事务)

                                   {  多条SQL语句 }

                          commit  Transaction    (提示事务)

                          rollback  Transaction    (回滚事务)

     

         ---- 实际编码:

                         declare  @errorSum  int

                         set  @errorSum = 0

                         Begin Transaction

                                  insert into .......(SQL语句)

                                  set @errorSum = @errorSum + @@ERROR

         insert into .......(SQL语句)

         set @errorSum = @errorSum + @@ERROR

                                  ......

                          if  @errorSum = 0

                                  commit  transaction

                          else

        rollback  transaction

     

     

    事务特点:

    ------ 原子性、一致性、隔离性、持久性

            原子性:整个事务,无论其中包含多少SQL语句,都是一个整体!要么都提交,要么都回滚;

    一致性:事务执行前后,整个数据库都满足各种约束条件

    隔离性:多个事务操作同一数据对象,彼此的“执行过程”和“效果”相互隔离,互不影响。

    持久性:虽然事务执行过程中,对数据库的影响具有不确定性(提交、回滚),但是一旦事务结束(commit、rollback),对数据库照成的影响将是持久存在的。

     

    事务分类:

            ------ 显式事务、隐式事务、自动提交事务

              显式事务:以Begin Transaction开始,rollback commit 结束的事务

              隐式事务:以“开关”(ON)方式打开事务,当事务结束后,自动开始新事务,直到“开关”关闭(OFF)

              自动提交事务:SQL SERVER 的默认事务方式,每句SQL都是独立的事务

     

     

    视图:

            ---- 当我们进行数据库设计时,为了减少数据的冗余,常常会将生活中本身关联在一起的数据,拆分到不同的表单中!这样,导致在访问数据时,SQL代码复杂,效率也低下(多表联查)。可以将“多表联查”的SQL语句预先存放在数据库中,从减少每次使用时,都重新编写的麻烦!

           ----- 视图:就是保存在数据库中的“一条”“select语句”。视图的使用与“Table”相似,但table中直接存放着数据,但是view中没有存放数据,数据依然存放在其对应的基础表中。

           ----- 视图中Select语句,编写时的注意事项:  

        • order       by (除非含有Top)
        • into
        • 表变量(临时表)   

          ------ 视图的应用场景:

        • 简化后台数据库的结构,方便编写数据访问代码简化sql(将多个物理数据库当做一个逻辑数据库)
        • 保护“敏感数据”,防止非法访问!(通过其Select对行、列进行过滤)          

     

     

    索引:

          ------- 将数据表中的某列进行排序,让其以后对该列的查询能够在“排序后”的结果上进行,从而提高数据检索的效率(排序的过程可以在新的索引表中进行【非聚集索引】,也可以在原有的表单中进行【聚集索引】)

         -------- 创建语法:

                            if exists(select * from sysindexes where  name = '索引名')

    drop  index  表名.索引名

           go

           create index 索引名  on   表名(列名)

           go

     

                      索引分类:

        • 唯一索引---- 索引表中所有的索引项,不允许重复
        • 主键索引---- 依据表单的主键列,创建索引表
        • 非聚集索引  ----- 将表单中的“搜索列”,复制到索引表并排序。(数据表与索引表各自单独存在)
        • 聚集索引 ---- 在原始的物理表单上,直接对“搜索列”进行排序。(数据表与索引表合二为一)

                         注意:

    1、一个表单只能创建一个“聚集索引”,但可以创建多个“非聚集索引”

    2、表单在创建主键时,将自动在表单上创建一个“主键索引”及“聚集索引”

     

                   索引的利弊:

                           利:提高数据检索效率

                           弊:增加了系统的数据存储开销、数据更改时效率降低             

     

                   索引的应用场景:

                           适用:频繁搜索(where),频繁被查询(select) ,排序,关联查询的列(主外键列)

                          不适用:行少、列数据变化少

     

     

     

     

     

     

     

     

    小贴士:

                            
      

     系统表名

      
      

    所在数据库

      
      

    存放的系统信息

      
      

    sysDataBases

      
      

    master

      
      

    数据库信息

      
      

    sysObjects

      
      

    用户数据库

      
      

    表、视图、存储过程

      
      

    sysIndexes

      
      

    用户数据库

      
      

    索引

      

     

     

    select ....

    into 新表名

    from ....

    ----- 作用,将查询结果,保存到一个【新建的数据表单】中。

     

  • 相关阅读:
    Druid 使用 Kafka 将数据载入到 Kafka
    Druid 使用 Kafka 数据加载教程——下载和启动 Kafka
    Druid 集群方式部署 —— 启动服务
    Druid 集群方式部署 —— 端口调整
    Druid 集群方式部署 —— 配置调整
    Druid 集群方式部署 —— 配置 Zookeeper 连接
    Druid 集群方式部署 —— 元数据和深度存储
    Druid 集群方式部署 —— 从独立服务器部署上合并到集群的硬件配置
    Druid 集群方式部署 —— 选择硬件
    Druid 独立服务器方式部署文档
  • 原文地址:https://www.cnblogs.com/why168888/p/4278906.html
Copyright © 2020-2023  润新知