SETUP
Мне нужно вставить пару миллионов строк в SQL Server 2000/2005, MySQL или Access. К сожалению, у меня нет простого способа использовать массовую вставку или BCP или любой другой способ, которым нормальный человек мог бы пойти по этому поводу. Вставки будут происходить в одну конкретную базу данных, но этот код должен быть независимым от БД - поэтому я не могу делать массовое копирование, или ВЫБРАТЬ В, или BCP. Однако я могу выполнять определенные запросы до и после вставок, в зависимости от того, в какую базу данных я импортирую.
например.
If IsSqlServer() Then
DisableTransactionLogging();
ElseIf IsMySQL() Then
DisableMySQLIndices();
End If
... do inserts ...
If IsSqlServer() Then
EnableTransactionLogging();
ElseIf IsMySQL() Then
EnableMySQLIndices();
End If
ВОПРОС
Есть ли какие-нибудь интересные вещи, которые я могу сделать с SQL Server, которые могли бы ускорить эти вставки?
Например, есть ли команда, которую я мог бы выполнить, чтобы сказать SQL Server: «Эй, не беспокойтесь о записи этих транзакций в журнал транзакций».
Или, может быть, я мог бы сказать: «Эй, у меня есть миллион строк, поэтому не обновляйте свой индекс, пока я полностью не закончу».
ALTER INDEX [IX_TableIndex] ON Table DISABLE
... inserts
ALTER INDEX [IX_TableIndex] ON Table REBUILD
(Примечание: отключение индекса выше работает только в 2005 году, но не в 2000 году. Бонусные баллы, если вы знаете способ сделать это в 2000 году).
А как насчет MySQL и Access?