assignment vs SELECT INTO

From: Andrew Dunstan
Subject: assignment vs SELECT INTO
Date: ,
Msg-id: 5457DECE.3070302@dunslane.net
(view: Whole thread, Raw)
Responses: Re: assignment vs SELECT INTO  (Tom Lane)
Re: assignment vs SELECT INTO  (Matheus de Oliveira)
List: pgsql-performance

Tree view

assignment vs SELECT INTO  (Andrew Dunstan, )
 Re: assignment vs SELECT INTO  (Tom Lane, )
  Re: assignment vs SELECT INTO  (Andrew Dunstan, )
 Re: assignment vs SELECT INTO  (Matheus de Oliveira, )

I found out today that direct assignment to a composite type is (at
least in my test) about 70% faster than setting it via SELECT INTO. That
seems like an enormous difference in speed, which I haven't really been
able to account for.

Test case:

    andrew=# \d abc
           Table "public.abc"
      Column |  Type   | Modifiers
    --------+---------+-----------
      x      | text    |
      y      | text    |
      z      | integer |
    andrew=# do $x$ declare r abc; begin for i in 1 .. 10000000 loop
    select 'a','b',i into r.x,r.y,r.z; end loop; end; $x$;
    DO
    Time: 63731.434 ms
    andrew=# do $x$ declare r abc; begin for i in 1 .. 10000000 loop r
    := ('a','b',i); end loop; end; $x$;
    DO
    Time: 18744.151 ms


Is it simply because the SELECT is in effect three assignments, so it
takes nearly 3 times as long?

cheers

andrew



pgsql-performance by date:

From: Andrew Dunstan
Date:
Subject: Re: assignment vs SELECT INTO
From: Stuart Bishop
Date:
Subject: Re: Replication Lag Causes