Problem with inserts from subselects - Mailing list pgsql-admin
From | Tyler Ward |
---|---|
Subject | Problem with inserts from subselects |
Date | |
Msg-id | 40892875.70409@columbia.edu Whole thread Raw |
Responses |
Re: Problem with inserts from subselects
Re: Problem with inserts from subselects |
List | pgsql-admin |
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@columbia.edu
pgsql-admin by date: