Thread: Temporary tables

Temporary tables

From
"SHELTON,MICHAEL (Non-HP-Boise,ex1)"
Date:
Hello,

I am attempting to optimize a number of queries that are dependant on a
first query (big join) that is expensive to run.  Instead of having the join
be executed for each subsequent query I would like to put the results of the
first join into a temp table.  I found syntax for creating a temp table in
the idocs (SELECT <foo> INTO <tmp_table> FROM <table>) and this works fine.
My problem is that the table isn't very "temporary".  Is there a way to have
the table drop automagically when I'm done with it.  I'm accessing it
through PHP 4.0 via apache on a 7.1.3 db.  I would really like it to drop
when I close the connection.  

A 2nd question is what about concurrency?  Is there a way to hide this temp
table from other concurrent connections to the db (I thought I remember
reading an earlier post about this) so that you don't get name conflicts
with the temp table?

Thanks,

Mike Shelton


Re: Temporary tables

From
"Peter T. Brown"
Date:
Look at the syntax for CREATE TABLE AS

You can CREATE TEMP TABLE <tablename> AS SELECT ...

This temp table will be removed automagically

-----Original Message-----
From: pgsql-sql-owner@postgresql.org
[mailto:pgsql-sql-owner@postgresql.org]On Behalf Of SHELTON,MICHAEL
(Non-HP-Boise,ex1)
Sent: Thursday, January 10, 2002 3:03 PM
To: pgsql-sql@postgresql.org
Subject: [SQL] Temporary tables


Hello,

I am attempting to optimize a number of queries that are dependant on a
first query (big join) that is expensive to run.  Instead of having the join
be executed for each subsequent query I would like to put the results of the
first join into a temp table.  I found syntax for creating a temp table in
the idocs (SELECT <foo> INTO <tmp_table> FROM <table>) and this works fine.
My problem is that the table isn't very "temporary".  Is there a way to have
the table drop automagically when I'm done with it.  I'm accessing it
through PHP 4.0 via apache on a 7.1.3 db.  I would really like it to drop
when I close the connection.

A 2nd question is what about concurrency?  Is there a way to hide this temp
table from other concurrent connections to the db (I thought I remember
reading an earlier post about this) so that you don't get name conflicts
with the temp table?

Thanks,

Mike Shelton

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command   (send "unregister YourEmailAddressHere" to
majordomo@postgresql.org)