Проблема производительности в запросах вставки
Привет ребята,
Только один короткий вопрос:
Я создаю sqlfile с большим количеством запросов вставки (например, 8000 различных запросов вставки)
.
Я запускаю этот файл через cmd
из ЦМД:
я подключусь к базе данных, запущу файл с запросами insert, чем зафиксирую его.
Могу ли я сделать что-то, чтобы сделать его более быстрым ?
Что я уже пробовал:
Я не знаю, что я могу сделать, вот почему я спрашиваю вас .
Mike V Baker
Можно ли создать sql-файл с 8 вставками по 1000 записей каждая, а не с 8000 вставками? То, что я обычно делаю, - это устанавливаю порог, например, 1000 записей. Когда я обрабатываю элементы, я веду подсчет количества вставок в списке, и когда он достигает порогового значения, он запускает эту вставку.
Sigmond Gatt
это может быть хорошей идеей , но когда дело доходит до cmd , cmd вставляет каждый запрос один за другим, и это требует времени. я попробую bcp может быть это сработает
Mike V Baker
Я имею в виду, что cmd нужно будет выполнить только 8 запросов вместо 8000. Несмотря на то, что каждый qry имеет 1000 записей, он все равно работает быстрее, чем 8000 одиночных вставок записей. Возможно, если вы разместили SQL, который будет выполняться cmd, я могу показать вам, что я имею в виду
Sigmond Gatt
если у меня есть вставка в таблицу 1 значений ("привет", "пока");
для 8000 раз, но значения все разные .. как я могу разделить их на 8 запросов ?
Спасибо Вам за вашу помощь.
Mike V Baker
Вставка в значения ComicCharacters (FirstName, LastName)
("Жучки", "Зайка"),
("Йосемити", "Сэм"),
("Элмер", "Фадд"),
("Виноград", "Обезьяна");
Начните с вставки в строку, а затем просто продолжайте перечислять значения в скобках. Когда он достигает размера пакета, вы запускаете cmd, очищаете его и начинаете все сначала. Используйте запятую между записями, точку с запятой в конце. 1000-это произвольное число, которое я выбрал, чтобы показать прогресс в программе.
Sigmond Gatt
это синтаксис SQL ? как я пробовал этот метод, но он не работает, может быть, потому, что я использую oracle ?