首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择SQL中的表。它们是如何储存的?

选择SQL中的表。它们是如何储存的?
EN

Stack Overflow用户
提问于 2014-02-07 20:16:19
回答 2查看 143关注 0票数 0

当我在PostgreSQL中运行一个脚本时,我通常从psql执行以下操作

代码语言:javascript
复制
my_database> \i my_script.sql

my_script.sql中,我可能有如下代码:

代码语言:javascript
复制
select a.run_uid, s.object_uid into temp_table from dt.table_run_group as a 
inner join dt.table_segment as s on a.group_uid = s.object_uid; 

在这种情况下,我只对使用查询结果创建temp_table感兴趣。

这些结果在服务器上的磁盘中吗?在记忆里?表是永久存储的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-07 23:24:39

  • 临时表存储在RAM中,直到可用内存用完为止,这时它们会溢出到磁盘上。这里的相关设置是temp_buffers
  • 无论是哪种方式,它们都在会话的持续时间内存活,并且会自动被删除。
  • 您还可以在事务结束时自动(ON COMMIT DROP)或任何时候手动删除它们。
  • 临时表仅对同一会话中的同一用户可见。其他人无法访问它--也不与之冲突。
  • 始终使用CREATE TABLE tbl AS ...。由于它与plpgsql中的SELECT ... INTO tbl子句冲突,因此不鼓励使用替代表单INTO

您的查询可能如下所示:

代码语言:javascript
复制
CREATE TEMP TABLE tbl AS
SELECT a.run_uid, s.object_uid
FROM   dt.table_run_group a 
JOIN   dt.table_segment   s ON a.group_uid = s.object_uid;
票数 2
EN

Stack Overflow用户

发布于 2014-02-07 21:47:39

SELECT INTO table ...CREATE TABLE table AS ...相同,后者创建了一个正常的永久表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21636968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档