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

选择SQL中的表。它们是如何储存的?,sql,postgresql,session,temp-tables,Sql,Postgresql,Session,Temp Tables,在PostgreSQL中运行脚本时,我通常从psql执行以下操作: my_database> \i my_script.sql 在my_script.sql中,我可能有如下代码: 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; 在本例中,我只对使用查询结

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

my_database> \i my_script.sql
my_script.sql
中,我可能有如下代码:

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_表
感兴趣


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

选择入表…
与创建表作为…相同,后者创建一个正常的永久表。

选择入表…
与创建表作为…相同,后者创建一个正常的,永久表。

选择入表…
与创建表为…相同,后者创建一个正常的永久表。

选择入表…
与创建表为…相同,后者创建一个正常的永久表。

    临时表存储在RAM中,直到可用内存用完,然后溢出到磁盘上。这里的相关设置是

  • 无论哪种方式,它们都在会话期间有效,并在会话结束时自动删除

  • 您还可以在事务结束时自动()或随时手动删除它们

  • 临时表仅对同一会话中的同一用户可见。其他人无法访问它,也不能与之冲突

  • 始终使用
    创建表tbl作为…
    。替代形式<代码>选择。。。不鼓励使用INTO tbl,因为它与plpgsql中的
    INTO
    子句冲突

您的查询可能如下所示:

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;
  • 临时表存储在RAM中,直到可用内存用完,然后溢出到磁盘上。这里的相关设置是

  • 无论哪种方式,它们都在会话期间有效,并在会话结束时自动删除

  • 您还可以在事务结束时自动()或随时手动删除它们

  • 临时表仅对同一会话中的同一用户可见。其他人无法访问它,也不能与之冲突

  • 始终使用
    创建表tbl作为…
    。替代形式<代码>选择。。。不鼓励使用INTO tbl,因为它与plpgsql中的
    INTO
    子句冲突

您的查询可能如下所示:

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;
  • 临时表存储在RAM中,直到可用内存用完,然后溢出到磁盘上。这里的相关设置是

  • 无论哪种方式,它们都在会话期间有效,并在会话结束时自动删除

  • 您还可以在事务结束时自动()或随时手动删除它们

  • 临时表仅对同一会话中的同一用户可见。其他人无法访问它,也不能与之冲突

  • 始终使用
    创建表tbl作为…
    。替代形式<代码>选择。。。不鼓励使用INTO tbl,因为它与plpgsql中的
    INTO
    子句冲突

您的查询可能如下所示:

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;
  • 临时表存储在RAM中,直到可用内存用完,然后溢出到磁盘上。这里的相关设置是

  • 无论哪种方式,它们都在会话期间有效,并在会话结束时自动删除

  • 您还可以在事务结束时自动()或随时手动删除它们

  • 临时表仅对同一会话中的同一用户可见。其他人无法访问它,也不能与之冲突

  • 始终使用
    创建表tbl作为…
    。替代形式<代码>选择。。。不鼓励使用INTO tbl,因为它与plpgsql中的
    INTO
    子句冲突

您的查询可能如下所示:

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;

您显示的表单中的查询(使用
进入临时表
部分)应将整个查询输出存储到表
临时表
中,并且不会将结果输出到
psql
。您显示的表单中的查询(使用
进入临时表
部分)应将查询的整个输出存储到表
temp_table
中,并且不会将结果输出到
psql
。以您显示的形式将查询(使用
存储到temp_table
部分)应将查询的整个输出存储到表
temp_table
中,并且不会将结果输出到
psql
。以您显示的形式将查询(使用
存储到temp_table
部分)应该将查询的整个输出存储到表
temp\u table
中,并且不会将结果输出到
psql
。太好了。谢谢有没有办法创建一个临时表,以便在断开连接时将其销毁?这样的表会作为常规表存储在数据库中吗?太好了。谢谢有没有办法创建一个临时表,以便在断开连接时将其销毁?这样的表会作为常规表存储在数据库中吗?太好了。谢谢有没有办法创建一个临时表,以便在断开连接时将其销毁?这样的表会作为常规表存储在数据库中吗?太好了。谢谢有没有办法创建一个临时表,以便在断开连接时将其销毁?这些表会作为常规表存储在数据库中吗?