视图与临时表

今天上午闲来无事,突然想写写视图与临时表的作用,如下:

视图:

视图的定义:从一个或多个表(或视图)导出的表。

视图与表的不同之处:视图是一个虚表,即视图所对应的数据不进行实际存储,数据库只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

上面小段其实已经讲出了视图的本质特征。

视图主要用于系统的安全、查询和效率,在安全方面,举个例子:例如,你只想让用户看到某一表的某几个字段,有些字段想不让用户看见,这是用视图解决会很好,当然在select时也可以实现。第在查询方面,对于比较复杂的查询,可以大大减少频繁编写sql语句的烦恼。同时,在效率上,数据分布在多台服务器上,视图一定会带来效率上的好处。

 

临时表:

临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。
    临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

例如,如果创建了 employees 表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。如果数据库会话创建了本地临时表 #employees,则仅会话可以使用该表,会话断开连接后就将该表删除。如果创建了 ##employees 全局临时表,则数据库中的任何用户均可使用该表。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果您创建该表后另一个用户在使用该表,则 SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。
  临时表主要用来提高效率。

 

二者区别:
空间分配:物理空间的分配不一样,视图不分配空间,   临时表会分配空间
虚实:视图是一条预编译的SQL语句,并不保存实际数据,而临时表是保存在tempdb中的实际的表。即视图是一个快照,是一个虚表,而临时表是客观存在的表类型对象。它们的结构一个是表、一个快照。可以把视图想象成联合表的快捷方式。

 

 

 

 

### Hive临时表视图区别 #### 区别概述 在Hive中,临时表视图都是用于特定目的的数据抽象工具,但两者之间存在显著差异。临时表主要用于提高查询性能或作为中间计算的结果容器;而视图则提供了一种逻辑上的数据表示方式,简化复杂查询并增强安全性。 #### 存储特性 对于临时表而言,在Hive 1.1.0版本之后支持将其存储位置设置为内存(memory),固态硬盘(ssd)或是默认路径(default)[^2]。这意味着可以根据具体需求调整临时表的物理存储介质以优化访问速度或其他方面表现。相比之下,视图并不实际占用额外的空间,因为它们只是保存了定义查询语句而不涉及底层数据的实际复制[^1]。 #### 生命周期管理 临时表的作用域仅限于当前会话(session),一旦该session结束,这些表格就会自动消失。这使得临时表非常适合用来处理一次性任务或者是那些不需要长期保留结果的情况。另一方面,除非显式删除(drop view命令),否则视图将持续存在于数据库对象列表里直到被移除为止。 --- ### 使用场景分析 #### 临时表适用场合 当面对大量重复性的子查询操作时,可以考虑利用临时表来缓存中间结果集从而减少冗余运算量。另外如果某些ETL流程涉及到频繁读取相同的大规模基础资料,则预先加载至高速缓存(如SSD)内的临时表能够有效提升整体效率[^2]。 #### 视图的应用范围 视图特别适合应用于需要向不同用户提供一致化视角的情形下——比如通过构建只读型视图为外部系统暴露有限字段组合的同时隐藏敏感信息。此外,借助视图还可以封装复杂的多表联接逻辑使之变得易于维护理解。 --- ### 创建方法详解 #### 如何创建临时表 要建立一张新的临时表,只需简单地添加`TEMPORARY`关键字到标准建表语法之前即可: ```sql CREATE TEMPORARY TABLE temp_table_name ( col1 STRING, col2 INT ); ``` 为了指定不同的持久层选项,可通过修改参数`hive.exec.temporary.table.storage`来进行配置。 #### 定义视图的方式 创建视图的过程相对更加直观一些,只需要给出目标列的选择以及相应的过滤条件等要素便能完成整个过程: ```sql CREATE VIEW updatable_view AS SELECT * FROM simple_table; ``` 值得注意的是上述例子展示了一个理论上具备更新能力的视图实例。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值