From: | Kevin Grittner <kgrittn(at)ymail(dot)com> |
---|---|
To: | James David Smith <james(dot)david(dot)smith(at)gmail(dot)com>, PGSQL-Novice <pgsql-novice(at)postgresql(dot)org> |
Subject: | Re: Update with last known location? |
Date: | 2014-01-28 22:00:38 |
Message-ID: | 1390946438.20449.YahooMailNeo@web122301.mail.ne1.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
James David Smith <james(dot)david(dot)smith(at)gmail(dot)com> wrote:
> Given the data is so large I don't want to be taking the data out
> to a CSV or whatever and then loading it back in. I'd like to do
> this within the database using SQL. I thought I would be able to
> do this using a LOOP to be honest.
I would be amazed if you couldn't do this with a single UPDATE
statement. I've generally found declarative forms of such work to
be at least one order of magnitude faster than going to either a PL
or a script approach. I would start by putting together a SELECT
query using window functions and maybe a CTE or two to list all the
primary keys which need updating and the new values they should
have. Once that SELECT was looking good, I would put it in the
FROM clause of an UPDATE statement.
That should work, but if you are updating a large percentage of the
table, I would go one step further before running this against the
production tables. I would put a LIMIT on the above-mentioned
SELECT of something like 10000 rows, and script a loop that
alternates between the UPDATE and a VACUUM ANALYZE on the table.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Gavin Flower | 2014-01-28 23:15:28 | Re: Update with last known location? |
Previous Message | Rohit Goyal | 2014-01-28 21:59:37 | Re: Fwd: Request for error explaination || Adding a new integer in indextupleData Structure |