临时表和视图的使用

临时表目的:存储中间结果集,查询起来更快。
视图目的:简化复杂的联表查询语句,虚拟的存在,效率一般。

临时表的使用场景:
1.用sql查询多张关联表的结果,形成临时表,提高速度和效率。
2. 写存储过程,假设有7张表,我们可以先将4张表关联好存成一张临时表A,将剩下的3张表关联存在临时表B,最后将A和B关联就可以得到结果表。
3.在导出数据时,只想导出表中部分数据,就可以形成临时表。
视图的使用场景:
1.如果表中有客户隐私数据,姓名、地址、邮箱、电话号码、工资等隐私数据,把数据敏感字段过滤掉就可以呈现的你想呈现数据了。
创建临时表:

CREATE TEMPORARY TABLE 表名1 ( 

字段 VARCHAR(10) NOT NULL, 

字段 INTEGER NOT NULL 

) 

导入数据进临时表:

insert into 表名1
select 字段  from 表 ;

创建视图:

CREATE VIEW 表名2 AS
select 字段 from 表 ;

(1)创建的临时表的字段需要和导入数据的字段保持一致。
(2)创建临时表时注意:主键字段放在最后。
(3)left join每张表时,left join前不能有空格。
(4)left join的表中所列字段只能是本表字段。
(5)数据是每天增量,所以无论是临时表还是视图,在基于查询时,都需要清除数据重新导。
(6)创建视图报错:Column name ‘mobile’ specified more than once,解决办法:表字段后在 空格 写下新的名称用于区分,也就是重新命名。

### 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; ``` 值得注意的是上述例子展示了一个理论上具备更新能力的视图实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值