Техника, которую мы используем на работе, должна запросить файл JavaScript с помощью запроса Ajax и затем оценки () возврат. Если Вы пользуетесь библиотекой прототипа, они поддерживают эту функциональность в своем Ajax. Вызов запроса.
BULK INSERT выполняется внутри процесса с ядром базы данных SQL Server и, таким образом, избегает передачи данных через сетевой уровень клиентского API - это делает его быстрее, чем BCP и DTS / SSIS.
Кроме того, с помощью BULK INSERT вы можете указать ORDER BY данных, и если это то же самое, что и PK таблицы, то блокировка происходит на уровне PAGE. Записи в журналы транзакций также происходят на уровне страницы, а не на уровне строки.
В случае обычного INSERT блокировка и запись в журнал транзакций выполняются на уровне строк. Это делает BULK INSERT быстрее, чем оператор INSERT.
По крайней мере, это может избежать накладных расходов на создание и фиксацию транзакции для каждой вставляемой записи. Есть и другая экономия: например, поможет доставка больших блоков данных по сети, а не по одной записи за раз.
Тогда, что, возможно, более интересно, разработчик БД может (я не знаю, есть ли какие-то конкретные поставщик действительно делает это) начинают умничать - они могут смотреть на набор записей, которые нужно вставить, и вместо того, чтобы реорганизовывать страницы данных для размещения отдельных записей, могут производить массовую реорганизацию страниц для обеспечения новых вставок, аналогично мы можем представить, что перемешивание индексы можно было бы сделать более эффективно, если бы мы знали, что вставляем набор записей.
Внутри он преобразуется в набор записей OLEDB, а затем загружает таблицу.
Я не особо задумывался об этом, но предполагаю, что это быстрее при запуске на SQL Server коробка, а не клиент. Кроме того, вы можете управлять ограничениями, которые вы не можете сделать с помощью обычного INSERT