Re: seemingly slow for-loop in plpgsql

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Claus Guttesen" <kometen(at)gmail(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: seemingly slow for-loop in plpgsql
Date: 2008-09-02 22:47:29
Message-ID: 7518.1220395649@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

"Claus Guttesen" <kometen(at)gmail(dot)com> writes:
> create or replace function update_hashcode() returns setof duplicates as
> $body$
> declare
> d duplicates%rowtype;
> h text;
> begin
> for d in select * from duplicates where length(hashcode) = 33 loop
> h := rtrim(d.hashcode, E'\n');
> update duplicates set hashcode = h where id = d.id;
> return next d;
> end loop;
> end
> $body$
> language 'plpgsql' ;

Why in the world are you using a for-loop for this at all? It would be
tremendously faster as a single SQL command:

update duplicates set hashcode = rtrim(hashcode, E'\n') where length(hashcode) = 33;

regards, tom lane

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Achilleas Mantzios 2008-09-03 06:56:32 Re: order of rows in update
Previous Message Claus Guttesen 2008-09-02 22:27:38 seemingly slow for-loop in plpgsql