Re: Problem with inserts from subselects

From: banghe <banghe(at)baileylink(dot)net>
To: Tyler Ward <tjw19(at)columbia(dot)edu>
Cc: pgsql-admin(at)postgresql(dot)org, Tyler Ward <tward(at)janestcapital(dot)com>
Subject: Re: Problem with inserts from subselects
Date: 2004-04-23 14:54:37
Message-ID: 40892E2D.5070804@baileylink.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

Can you try in this way:

INSERT INTO table_a (session, sent, data_row, direction_id, instrument,
price, size)
select tmp.session, tmp.sent, tmp.data_row, tmp.direction_id, i.id,
tmp.price, tmp.size
FROM table_b tmp
INNER JOIN table_c i ON i.symbol_id = tmp.symbol_id AND i.route_id =
tmp.route_id
LIMIT 10 ;

This is without ( ).

Banghe

Tyler Ward wrote:

>
>
>
> I'm using postgres 7.3.x (the default installed on Fedora Core 1) and
> I'm running into a serious
> bug in the insert performance.
>
> When I try a query like this...
>
> <snip>
>
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size)
> (
> select tmp.session, tmp.sent, tmp.data_row, tmp.direction_id, i.id,
> tmp.price, tmp.size
> FROM table_b tmp
> INNER JOIN table_c i ON i.symbol_id = tmp.symbol_id AND i.route_id =
> tmp.route_id
> LIMIT 10
> );
>
> </snip>
>
> the performance is really slow, that query takes about 10 seconds to
> run. If I raise the limit to 100, it takes
> 10 times longer, etc.... It is basically so slow that we can't use our
> database at all. However, if I just run the
> inner select, like this....
>
> <snip>
> select tmp.session, tmp.sent, tmp.data_row, tmp.direction_id, i.id,
> tmp.price, tmp.size
> FROM table_b tmp
> INNER JOIN table_c i ON i.symbol_id = tmp.symbol_id AND i.route_id =
> tmp.route_id
> LIMIT 10
> </snip>
>
> The result returns basically instantly, in less than half a second.
>
> If I just insert the data by hand....
>
> <snip>
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820183, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820184, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820185, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820186, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820187, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820188, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820189, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820190, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820191, 1, 852, 1.0, 10);
> INSERT INTO table_a (session, sent, data_row, direction_id,
> instrument, price, size) VALUES (1, NOW(), 820192, 1, 852, 1.0, 10);
> </snip>
>
> then it's fast again. The above query finishes all ten inserts in less
> than half a second.
>
> So it seems that the problem only occurs when inserting data from a
> select clause, what's going on? And more importantly, how can I
> fix it?
>
>
> -Tyler
> tjw19(at)columbia(dot)edu
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Photo Researchers 2004-04-23 19:43:04 Follow-up: compiling 7.4 --with-java
Previous Message sybrandb 2004-04-23 14:40:26 Re: How configure Oracle 9i not case sensitive...