pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Andrew Dunstan <andrew@dunslane.net>
To: pgsql-perform <pgsql-performance@postgresql.org>
Subject: assignment vs SELECT INTO
Date: Mon, 03 Nov 2014 15:00:14 -0500
Message-ID: <5457DECE.3070302@dunslane.net> (raw)
List-Unsubscribe:  <mailto:majordomo@postgresql.org?body=unsub%20pgsql-performance>


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


-- 
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance



view thread (4+ messages)  latest in thread

Message-ID: <5457DECE.3070302@dunslane.net>
Permalink:  ../5457DECE.3070302@dunslane.net/
Also on:    postgresql.org/message-id/5457DECE.3070302@dunslane.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: andrew@dunslane.net
  Subject: Re: assignment vs SELECT INTO
  In-Reply-To: <5457DECE.3070302@dunslane.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox