Subject Re: [Firebird-Architect] Bulk loader.
Author Vlad Khorsun
>>>> If the server knew it was a bulk load, it could lock the table, load the
>>>> data, and build the indexes using a sort and fast load / fast merge
>>>> algorithm (more or less equivalent to dropping the indexes, loading, and
>>>> redefining the indexes but easier). On the other hand, "locking the
>>>> table" isn't exactly a classic concept.
>>>>
>>>>
>>> Hmm, why do we need to lock the table ?
>>>
>>>
>> If indexes are completely disabled, no. Otherwise the records will
>> appear no to be there. If the load is done under a single transaction,
>> however, this isn't an issue.
> And what about duplicate keys handling?

For speed no unique\foreign constraints must be checked during bulk
insert. All this constraints will be checked at the end of bulk insertion
during index merge\rebuild phase. Another (not perfect but possible) way
is to disallow bulk insert into table which have such constraints.

Regards,
Vlad