You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift为何提供两种临时表创建方式?二者如何选型?

Redshift 两种临时表创建方式的背景与选用建议

在Redshift中创建临时表目前支持两种完全等效的写法:

  • 标准关键字写法:在CREATE TABLE语句中加入TEMPORARY(可简写为TEMP)参数,语法如下:
CREATE TEMPORARY TABLE tbl...
  • 特殊前缀写法:直接在表名开头加#号标识,不需要额外加临时表关键字,语法如下:
CREATE TABLE #tbl...

设计背景

#前缀的写法确实是出于向后兼容的考量做的特殊适配。这个语法最早是SQL Server的专属临时表规则,Redshift上线早期为了降低企业从SQL Server迁移数仓作业的改造成本,专门在引擎层兼容了这个写法,官方只在红色重要提示块里做了功能说明,没有把它作为主推的标准语法。

实际行为差异

目前Redshift对两种写法创建的临时表没有做任何功能区分:二者都是会话级生命周期,会话断开后自动删除,仅对当前创建会话可见,存储逻辑、查询性能、权限规则完全一致,不存在谁优先级更高的区别。

选用建议

  • 新开发的SQL逻辑优先使用TEMPORARY关键字的写法:这是符合ANSI SQL标准的通用语法,跨数据库/数仓引擎的可读性更强,不会让不熟悉Redshift兼容特性的开发者产生困惑,也是官方文档示例默认使用的写法。
  • #前缀写法只建议在迁移存量SQL Server脚本时临时过渡使用,不要在新业务里主动写:这个属于非标准的兼容语法,后续如果做跨引擎迁移(比如切换到其他数仓产品)会产生额外的改造工作量,也容易和特殊命名的普通表产生识别混淆。

官方重要提示:如果指定的表名以'#'开头,该表将被创建为临时表。

内容的提问来源于stack exchange,提问作者LondonRob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:03:25