alexs писал(а):Для массовых операций вставки - не нужно использовать буфер набора данных SQLQuery1. А оператор Insert именно это делает. Полсмотри у него методы Execute и у TSQLConnection - метод ExecuteDirect.
Я сам именно с этими наборами не работаю - но по логике вещей именно они должны обеспечитвать прямое выполнение SQL запроса - без использования буфера.
А в твоём примере - посел заполнения каждой итерации необходимо делать POST а ApplyApdates - либо после всего цикла, либо переодически - через 1000 - 2000 итераций.
Но - это не самый лучший метод.
1. Ничего не помагает. Дошел даже до того, что уничтожал компоненты (.Free) - все бесполезно. И без разницы где ставить ApplyApdates, все равно один и тотже результат. Пока не закроешь приложение, память не очищается. Единственное что не пробовал, это использовать Insert into ...
2. Есть ли метод который очищает буфер набора данных.
3. имхо где-то ошибка, а желания разбираться с исходным кодом нет. Ведь при использовании .Free (.Destroy) должна была и память освободиться, занимаемая компонентом.
Добавлено спустя 31 минуту 27 секунд:использование Insert into ... помогло решить это проблему
И добавление записей ускорилось в несколько раз.
Но все же иногда возникают ситуации, когда удобнее использовать другие способы добавления и редактирования записей.