首页 > 数据库 > MySQL > 正文

MySQL视图 存储步骤与存储引擎

2024-07-24 12:35:57
字体:
来源:转载
供稿:网友
  MySQL视图、存储过程与存储引擎
  一、前言
  ​ 前面的文章已经介绍了MySQL的索引与事务以及MySQL的备份与恢复的相关的内容,本文将对MySQL视图及存储过程以及存储引擎进行讲述。
 
  二、MySQL视图
  2.1问题引出——视图的概念
  ​ 我们在使用SQL语句进行多表查询的时候的命令是非常冗长而麻烦的,如果说这样的操作还非常多的使用的情况下就会加大工作人员的工作量,毕竟不能保证如此长的代码不会写错,并且多次进行如此复杂的查询也会造成服务器资源占用比变大的问题,那么我们有什么好的办法解决这样的问题呢?
 
  2.2为什么要使用视图——视图的特点及优缺点
  视图所占资源较少,就好比是水中月,实际并不存在,但是会根据基表的变化而产生变化。
 
  优点:
 
  ​ 1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
 
  ​ 2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
 
  ​ 3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
 
  ​ 总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。
 
  缺点:
 
  ​ 1)性能差:数据库必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。
 
  ​ 2)修改限制:当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。
 
  2.3简述视图算法
  ​ 对于视图的算法,简单介绍一下,我们需要在创建视图的时候指定,基本语法:
  create + [algorithm = temptable/merge/undefined] + view + 视图名 + as + select语句 with check option;
  视图算法,即系统对视图以及外部查询视图的select语句的一种解析方式。视图算法有三种,分别为:
 
  undefined:未定义(默认的),这不是一种实际使用的算法,而是一个“推卸责任”的算法。在未定义的情况下,告诉系统,视图没有定义算法,请自己选择。
  temptable:临时表算法,系统先执行视图的select语句,后执行外部查询语句。
  merge:合并算法,系统先将视图对应的select语句与外部查询视图的select语句进行合并,然后再执行。此算法比较高效,且在未定义算法的时候,经常会默认选择此算法。
  2.4创建视图命令
  创建一般视图命令格式:
 
  create view 视图名称 as select +内容
  三、 MySQL存储引擎
   存储引擎介绍
  ​ MySQL中的数据用各种不同的技术存储在文件或者内存中。而这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供广泛的不同的功能和能力。
 
  ​ 这些不同的技术以及与之相应的相关功能在MySQL中被称作为“存储引擎”。MySQL提供了多个不同的存储引擎,可以预先设置或者在MySQL服务器中启用。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表