Hi again,

I did a follow up test using 'multi-value' inserts which is three times
faster than multiple inserts thusly:

TRUNCATE test;
BEGIN;
INSERT INTO test (one, two, three, four, five) VALUES ('2011-01-01', true,
'three', 4, 5.5)
,('2011-01-01', true, 'three', 4, 5.5)
-- 99'998 more , ('2011-01-01', true, 'three', 4, 5.5) ...;
END;

This is the kind of speed increase I was hoping for when using prepared
statements (which makes sense because in this multi-value insert the query
is only being planned once?).

Thanks,
Dan.
P.S. Mac OS X 10.7.3 using PostgreSQL 9.1.2.

On Thu, May 10, 2012 at 9:25 AM, Daniel McGreal
<daniel.mcgr...@redbite.com>wrote:
>
>> Hi!
>>
>> My reading to date suggests that prepared statements should be faster to
>> execute than issuing the same statement multiple times. However, issuing
>> 100'000 INSERTs turned out to be more than ten times faster than
>> executing the same prepared statement 100'000 times when executed via
>> pgAdmin. The table was:
>>
>> CREATE TABLE test
>> (
>>   one date,
>>   two boolean,
>>   three character varying,
>>   four integer,
>>   five numeric(18,5),
>>   id serial NOT NULL --note the index here
>> )
>>
>> The prepared statement test lasting ~160 seconds was:
>>
>> TRUNCATE test;
>>
>> BEGIN;
>> PREPARE foo(date, boolean, varchar, integer, numeric(18,5)) AS
>>     INSERT INTO test (one, two, three, four, five) VALUES ($1, $2, $3,
>> $4, $5);
>>
>> EXECUTE foo('2011-01-01', true, 'three', 4, 5.5);
>> -- 99'999 more executes...
>> END;
>>
>> The insertion test lasting ~12 seconds was:
>>
>> TRUNCATE test;
>>
>> BEGIN;
>> INSERT INTO test (one, two, three, four, five) VALUES ('2011-01-01',
>> true, 'three', 4, 5.5);
>> -- 99'999 more inserts...
>> END;
>>
>> I'm assuming then that I've done something mistakenly.
>>
>> Many thanks,
>> Dan.
>>
>
>

Reply via email to