![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстрая вставка записей [D7, MSSQL]
Yan © (2003-11-28 14:18:00)
Как быстрее всего вставить большое количество записей в таблицу (разумеется ипользуя Delphi)
ksan (2003-11-28 22:07:00) [1]
Удалено модератором
Zacho (2003-11-28 22:01:00) [2]
Удалено модератором
ksan (2003-11-28 20:43:00) [3]
Удалено модератором
Reindeer Moss Eater (2003-11-28 20:42:00) [4]
Ладно, открою еще один страшный секрет:
Протоколирование операций в журнале транзакций занимает некоторое время, которое увеличивает время этой самой вставки.
ksan (2003-11-28 20:38:00) [5]
Для MSSQL много секретов наверное. Я с ним не работал. Извини. Но все равно, а при чем здесь журнал?
Reindeer Moss Eater (2003-11-28 20:33:00) [6]
Не много ли секретов для одной ветки и для одного MSSQL сервера?
SELECT INTO
BULK COPY
Это только то, что касается вставки данных.
Ни одна из этих операций не протоколируется в журнале транзакций.
ksan (2003-11-28 20:31:00) [7]
Поделись секрктом - а что НЕ в транзакциях? Если клиент-сервер?
Reindeer Moss Eater (2003-11-28 20:27:00) [8]
Неправильно понимаешь.
Не все в транзакциях.
ksan (2003-11-28 20:25:00) [9]
Как я понимаю: ВСЕ обрабатывается в транзакциях. А выигрыш во времени протокола на сервере значителен ли?
Reindeer Moss Eater (2003-11-28 20:03:00) [10]
Это не секрет.
Иначе бы в документации по поводу этого ничего бы не было написано.
DML операции могут протоколироваться (обрабатываться в транзакциях) а могут и не протоколироваться в журнале тразакций.
Во втором случае вставка записей занимает меньше времени.
ksan (2003-11-28 19:57:00) [11]
> Reindeer Moss Eater © (28.11.03 19:35) [10]
Если не секрет, а как это можно контролировать?
Reindeer Moss Eater (2003-11-28 19:35:00) [12]
Временем вставки разумеется
ksan (2003-11-28 19:35:00) [13]
Действительно, а чем "БЫСТРО" отличается от других вставок?
}|{yk (2003-11-28 19:28:00) [14]
Не знаю, наиболее бысро ли это, но можно сделать client dataset совать данные в него, а потом делать commitupdate(-1)
Reindeer Moss Eater (2003-11-28 15:00:00) [15]
...который был загружен из файла
Утилита BULK INSERT.
Быстрее не будет. Если режим у сервера позволяет непротоколируемые операции вставки
Карелин Артем (2003-11-28 14:56:00) [16]
1) Делаем DisableControls для открытого датасета.
2) До начала вставки стартуем транзакцию, по окончании подтверждаем. Хотя это зависит от компонентов...
ZrenBy (2003-11-28 14:55:00) [17]
Один из способов
Сформировать XML
Передать XML и
insert into table select ... from openxml( )
Yan (2003-11-28 14:50:00) [18]
Reindeer Moss Eater В некотором открітом наборе данных например в клиент датасете, который был загружен из файла
Reindeer Moss Eater (2003-11-28 14:25:00) [19]
не надо торопиться
b0bi (2003-11-28 14:24:00) [20]
SELECT <fields> INTO <DestinationTable> FROM <SourceTable> WHERE <condition> (при этом DestinationTable создаётся и в неё добавляются записи)
или так
INSERT INTO <DestinationTable>(<fields>) (<sub_query>)
(DestinationTable должна существовать, выход sub_query должен совпадать с полями DestinationTable)