配置单元 "with tbl as" 与 "create table tbl as"

hive "with tbl as" vs "create table tbl as"

  1. < with tbl as > 是否比 < create table tbl as > 快得多?
   with tbl as 
   (
    select 
      id,name 
    from 
      a
   )
   select id from tbl;

   create table tbl 
   as 
   select 
      id,name 
   from 
      a;

   select id from tbl;
  1. 如果我想在很多查询中使用 tbl,如何使用 < with tbl as >?
    with tbl as 
   (
    select 
      id,name 
    from 
      a
   )
   select id from tbl;

   select name from tbl;

  1. 没有明显的性能差距。

  2. with tbl as 是一个常见的 table 表达式,又名 CTE,只能在单个查询中访问。所以我们不能在 ; 分隔的多个 SQL 查询中使用 CTE。

  3. create temporary tabletable优于create table。前者在单个会话中可见,并在会话结束时消失。