临时表的使用场景:
   
   
   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,解决办法:表字段后在 空格 写下新的名称用于区分,也就是重新命名。
链接:https://www.zhihu.com/question/21675233/answer/101170877
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
什么时候使用视图呢?
应用场景1:保密工作,比如有一个员工工资表,如果你只希望财务看到员工工资这个字段,而其他人不能看到工资字段,那就用一个视图,把工资这个敏感字...
				一、临时表
当处理复杂的查询或事务时,由于在数据写入永久表之前需要暂时存储一些行信息或需要保存查询的中间结果,可能需要一些表来临时存储这些数据。DM 允许创建临时表来保存会话甚至事务中的数据。在会话或事务结束时,这些表上的数据将会被自动清除。
临时表中的数据不能像在其它永久表中的数据那样进行备份,当事务结束或会话断开时,数据就会被清空。在临时表创建过程中,不会像永久表和索引那样自动分配数据段,而是仅当第一次执行 DML 语句时,才会为临时表在临时表空间中分配空间。并且,对于不同的会话,临时表上的数据是独
应用场景1:保密工作,比如有一个员工工资表,如果你只希望财务看到员工工资这个字段,而其他人不能看到工资字段,那就用一个视图,把工资这个敏感字段过滤掉
应用场景2:有一个查询语句非常复杂,大概有100行这么多,有时还想把这个巨大无比的选择语句和其他表关联起来得到结果,写太多很麻烦,可以用一个视图来代替这100行的选择语句,充当一个变量角色
什么时候用临
				select i=identity(int,1,1),FStartGrade,COUNT(*)as FTotalPeo into qh from VLoglist group by FStartGrade
select top 6 * from qh where i>1 order by i
				经常访问的话当然是创建视图好  临时表是用一次建立一次 肯定要慢些的
1,存在方式: 临时存在于 服务器内存中 视图 无存在形式 2, 生命周期: 临时表 
Sql服务关闭就消失 视图 你不删它就不会消失 3,用途 临时表 经常作为 中间转接层 视图 作为物理表的窗口 4,效率 
临时表因为在缓存中,所以执行效率比较高视图 效率一般,但是节省I/O操作,节约资源 5,在存储过程使用时: ...
				当我们有两个表的时候,举例如一个为在途库存,一个为实际库存,然后这个库存是根据订单是否确定收货决定的,如果不是确定的就为在途,如果是确定的则为实际,根据不同的表union得到,那怎么标示这两个查询字段呢?
select SUM(real_quantity) AS inventory,'0' as passage_inventory
from  a where xxx = xxx
union
select '0' as inventory, SUM(real_quantity) AS passage_inve
#### 区别概述
在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;
值得注意的是上述例子展示了一个理论上具备更新能力的视图实例。