Thursday, February 19, 2015

PostgreSQL临时表(in progress)

以前上135时学过临时表,奈何忘了大半。现如今做132要用,现来回顾一下。


 临时表在会话结束时自动删除, 或者是(可选)在当前事务的结尾(参阅下面的 ON COMMIT)。 现有同名永久表在临时表存在期间在本会话过程中是不可见的, 除非它们是用模式修饰的名字引用的。 任何在临时表上创建的索引也都会自动删除。


PostgreSQL文档

PostgreSQL 8.1 中文文档

还在学习中,回头补充。

最近肯定要经常用temp table和trigger咯。

In Postgres, temporary tables are deleted when connection to the database is closed. Therefore, there is no need to drop the temporary table explicitly.

一直弄不清check

3 comments:

  1. 咱们当时没手动用 每个session都新建和销毁临时表 开销是够大的啊 临时表是要有disk读写的吧

    ReplyDelete
  2. 1. 临时表在会话结束后会自动删除(或者在事务结束后删除on commit drop). 也就是说每个会话中需要使用临时表的话需要重新创建.
    2. 临时表可以选择在事务结束后删除数据或者保留数据或者删除表.
    咱们当时是怎么实现的?是CREATE TEMP这种吗?
    最近做的这个project,sql比较复杂,我实在想不出什么好方法。

    ReplyDelete
  3. 咱们就用hibernate的数据对象访问的 直接能从对象里抽出所有要显示的内容(包括foreign key关联的对象) 就是读了不少多余的东西 所以会比较慢 hibernate应该有lazy load的方式避免冗余 不过当时没搞

    ReplyDelete