| From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
|---|---|
| To: | Jim Vanns <jvanns(at)ilm(dot)com>, pgsql-general(at)postgresql(dot)org |
| Subject: | Re: For temporary tables; truncate vs on commit delete all |
| Date: | 2023-03-22 13:55:05 |
| Message-ID: | a6ffb5db391c609862931cf2f1de2e36870476f5.camel@cybertec.at |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On Wed, 2023-03-22 at 11:59 +0000, Jim Vanns wrote:
> Does anyone have any idea which is generally better (by better I mean
> most efficient/quickest!) in this simple scenario? I have a temporary
> table which I wish to retain for the duration of a long-running
> session. However, for each transaction it must be purged. So, is it
> better to;
>
> a) Always CREATE TEMPORARY TABLE + ON COMMIT DROP for every transaction or;
> b) TRUNCATE TABLE or;
> c) ON COMMIT DELETE ROWS
>
> Both b & c avoid re-creating the table each time but at the cost of an
> explicit purge of some form.
> I would assume that despite its name, the latter, example c, is more
> akin to a truncation? Or does it actually perform a deletion?
b) or c) are best.
Yes, ON COMMIT DELETE ROWS will truncate the temporary table.
Creating too many temporary tables in a short time can lead to bloat
in "pg_attribute".
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bryn Llewellyn | 2023-03-22 19:09:03 | Re: Is the PL/pgSQL refcursor useful in a modern three-tier app? |
| Previous Message | Jim Vanns | 2023-03-22 11:59:36 | For temporary tables; truncate vs on commit delete all |