SQL Server 2008 INSERT Оптимизация - PullRequest
2 голосов
/ 08 ноября 2010

Мне нужно ВСТАВИТЬ много строк (более 1.000.000.000) в базу данных SQL Server. В таблице есть AI Id, два столбца varchar (80) и smalldatetime со значением GETDATE в качестве значения по умолчанию. Последний только для слухового, но необходимого.

Я хотел бы знать лучший (самый быстрый) способ вставки строк. Я читал о BULK INSERT. Но если возможно, я бы хотел избежать этого, потому что приложение не работает на том же сервере, где размещена база данных, и я хотел бы сохранить их как можно более изолированными.

Спасибо!

Diego

Ответы [ 3 ]

4 голосов
/ 08 ноября 2010

Другой вариант будет bcp .

В качестве альтернативы, если вы используете .NET, вы можете использовать класс SqlBulkCopy для массовой вставки данных. Это что-то Я написал около о производительности, которая может вас заинтересовать, когда я сравнил SqlBulkCopy с другим способом массовой загрузки данных в SQL Server из .NET (используя SqlDataAdapter). Базовый пример загрузки 100 000 строк занял 0,8229 с использованием SqlBulkCopy против 25,0729 с использованием подхода SqlDataAdapter.

1 голос
/ 08 ноября 2010

Создайте пакет служб SSIS, который будет копировать файл на компьютер с сервером SQL, а затем использовать задачу потока данных для импорта данных из файла в базу данных сервера SQL.

0 голосов
/ 08 ноября 2010

Нет более быстрого / более эффективного способа, чем BULK INSERT, и когда вы имеете дело с таким большим количеством данных, даже не думайте ни о чем из .NET, потому что благодаря GC управление миллионами объектов в памяти приводит к огромнымснижение производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...