Re: optimal insert - Mailing list pgsql-sql

From Aaron Bono
Subject Re: optimal insert
Date
Msg-id bf05e51c0610101345k293ce702mc2e3e6985ef18ad7@mail.gmail.com
Whole thread Raw
In response to optimal insert  ("Dirk Jagdmann" <jagdmann@gmail.com>)
Responses Re: optimal insert
Re: optimal insert
List pgsql-sql
On 10/8/06, Dirk Jagdmann <jagdmann@gmail.com> wrote:
Hello experts,

I have a database that contains three tables:

create table a (
id serial primary key,
... -- some more fields not relevant for my question
);
create table b (
id serial primary key,
... -- some more fields not relevant for my question
);
create table a_b (
a int not null references a,
b int not null references b
);

Tables a and b have already been filled with lots of rows. Now my
application needs to insert the relationship of a to b into table a_b
and is currently doing it with inserts like the following:

insert into a_b(a,b) values(1,100);
insert into a_b(a,b) values(1,200);
insert into a_b(a,b) values(1,54);
insert into a_b(a,b) values(1,4577);

So for a batch of inserts the value of a stays the same, while for by
arbitrary values are inserted. Now I have wondered if PostreSQL offers
a smarter way to insert those values? A solution can contains usage of
some plpgsql code.
 
It depends on your logic.  If you can write a query that selects out the a and b records, there is a smart way:
 
insert into a_b(a, b)
select 1, b.id from b where b.id in (100, 200, 54, 4577);
 
This is not really smart because you already have the id values - the select may diminish your performance rather than help.  But if the select is "smarter" then you don't even need to know what the b.id values are:
 
insert into a_b(a, b)
select 1, b.id from b where b.somecolumn = 'somevalue';
 
Hope this helps.
 
==================================================================
   Aaron Bono
   Aranya Software Technologies, Inc.
   http://www.aranya.com
   http://codeelixir.com
==================================================================

pgsql-sql by date:

Previous
From:
Date:
Subject: Temp tables and functions
Next
From: "George Pavlov"
Date:
Subject: Re: optimal insert