Re: [SQL] questions

From: Herouth Maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il>
To: Lendvary Gyorgy <gyurika(at)prolan(dot)hu>
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] questions
Date: 1998-06-09 12:55:46
Message-ID: l03110705b1a2df4f8fb2@[147.233.159.109]
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

At 15:01 +0300 on 9/6/98, Lendvary Gyorgy wrote:

> sprintf(buff, "CREATE TABLE boci (tup_num int, hapci int)");
> PQexec(conn, buff);
> for (i=0; i<10000; i++)
> {
> sprintf(buff, "INSERT INTO boci VALUES(i)");
> PQexec(conn, buff);
> }
>
> for (i=0; i<10000; i++)
> {
> x = GetValue(); /* GetValue isn't an interesting function */
> sprintf(buff, "UPDATE boci SET hapci = %d WHERE tup_num = %d", x,
> i);
> PQexec(conn, buff);
> }
>
> I don't want to update every tuple indvidually but I want to prepare a
> 'block write'. I hope you understand what I'd like to.
> Can you give me a good method for saving a long time? I need a program
> that is about 10 times faster than mine.

Batch inserts can be done faster with COPY rather than insert. I don't see
why you first prepare your table and only then fill it with values. First,
the record number could very well be created with a sequence, but even if
you want to do it programmatically, you should make it much faster (and
more efficient in disk space) if you insert the x directly.

Read the description of how to use COPY in the libpq manual. In general, it
would need to PQexec a COPY command, and then use PQputline inside the loop
and PQendcopy after it. Do all this inside a transaction block, and you'll
get the fastest results for an insert.

If you still need to programmatically update the lines afterwards, it must
be done with UPDATE. There's no help for it. But still, you can use it
inside a transaction block to improve speed. If all you need to do is
replace the values of hapci throughout, you can simply drop all the lines
and use a new COPY.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma

In response to

  • questions at 1998-06-09 12:01:39 from Lendvary Gyorgy

Browse pgsql-sql by date

  From Date Subject
Next Message Jose' Soares Da Silva 1998-06-09 14:50:50 Re: [SQL] querying array
Previous Message Dim Zegebart 1998-06-09 12:27:36 querying array