--- /dev/null
+ <chapter>
+ <title>Populating a Database</title>
+
+ <note>
+ <title>Author</title>
+ <para>
+ Written by Tom Lane, from an e-mail message dated 1999-12-05.
+ </para>
+ </note>
+
+ <para>
+ One may need to do a large number of table insertions when first
+ populating a database. Here are some tips and techniques for making that as
+ efficient as possible.
+ </para>
+
+ <sect1>
+ <title>Disable Auto-commit</title>
+
+ <para>
+ Turn off auto-commit and just do one commit at
+ the end. Otherwise <productname>Postgres</productname> is doing a
+ lot of work for each record
+ added. In general when you are doing bulk inserts, you want
+ to turn off some of the database features to gain speed.
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Use COPY FROM</title>
+
+ <para>
+ Use <command>COPY FROM STDIN</command> to load all the records in one
+ command, instead
+ of a series of INSERT commands. This reduces parsing, planning, etc
+ overhead a great deal. If you do this then it's not necessary to fool
+ around with autocommit.
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Remove Indices</title>
+
+ <para>
+ If you are loading a freshly created table, the fastest way is to
+ create the table, bulk-load with COPY, then create any indexes needed
+ for the table. Creating an index on pre-existing data is quicker than
+ updating it incrementally as each record is loaded.
+ </para>
+
+ <para>
+ If you are augmenting an existing table, you can <command>DROP
+ INDEX</command>, load the table, then recreate the index. Of
+ course, the database performance for other users may be adversely
+ affected during the time that the index is missing.
+ </para>
+ </sect1>
+ </chapter>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode:sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:"./reference.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:("/usr/lib/sgml/CATALOG")
+sgml-local-ecat-files:nil
+End:
+-->