Форум: "Базы";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКак ускорить закачку? Найти похожие ветки
← →
Пуртик (2004-10-06 17:42) [0]Продолжение http://delphimaster.net/view/3-1096959444/
Мастаки, очень долго идет заливка данных - в таблице фокса 7167 записей 5 полей, при заливке идет проверка(запрос) есть ли в базе данная запись, если ее нет, то она добавляется, если есть. то обновляются определенные поля(все запросами через ADOQuery, а из фокса данные вытягиваются в ADODataSet и идет обычный последовательный перебор строк Eof..Next) - это колличество записей заливается в MS SQL 10 минут Подскажите чего надо где подкрутить? Может настройки какие-то в конекшене к скл или фоксу? CacheSize у ADODataSet который к фоксу = 500.
← →
Пуртик (2004-10-06 20:55) [1]ау????
← →
MOA © (2004-10-06 21:03) [2]А DTS в Вашем случае не применить?
← →
panov © (2004-10-06 22:48) [3]1. Данные закачиваешь во временную таблицу без проверки.
2. Запросом INSERT добавляешь данные
3. Запросом UPDATE обновляешь данные.
Ускорение раз в 10 гарантированно.
← →
Vlad © (2004-10-06 23:05) [4]> при заливке идет проверка(запрос)
Запросик оптимизируй и будет все в порядке.
Проверь чтоб были необходимые индесы.
7000 записей при 5-и полях - это детский сад. Должно пулей свистеть.
← →
panov © (2004-10-06 23:09) [5]>Vlad © (06.10.04 23:05) [4]
7000 записей при 5-и полях - это детский сад. Должно пулей свистеть.
Это точно-)
Недавно закачивал около 2-х миллионов записей с различными проверками. пришлось здорово оптимизировать...
← →
Sens © (2004-10-07 08:45) [6]Когда я решал задачу перетаскивания базы в access, то делал это средствами access"а:
Function Ìàêðîñ1()
DoCmd.TransferDatabase acImport, "dBase 5.0", "d:\", acTable, "Dokum.dbf", "11", False
End Function
Если необходимо выполнить проверку данных - рекомендую не вставлять с помошью "INSERT", а подготовить файл (можно даже текстовый), а потом сделать import средствами СУБД думаю в MSSQL это можно сделать.
P.S. Более 500 тыс. записей влетают в базу за 10-20 сек.
← →
Пуртик (2004-10-07 10:18) [7]
> 1. Данные закачиваешь во временную таблицу без проверки.
> 2. Запросом INSERT добавляешь данные
> 3. Запросом UPDATE обновляешь данные.
>
> Ускорение раз в 10 гарантированно.
так и есть...
> Запросик оптимизируй и будет все в порядке.
> Проверь чтоб были необходимые индесы.
тут нечего оптимизировать :(
обычный запрос select * from table where pk_id = xxx
Индексы есть.
> 7000 записей при 5-и полях - это детский сад. Должно пулей
> свистеть.
вот не свистит...:( уж и не знаю что крутить, буду пробовать еще оптимизировать...
> Если необходимо выполнить проверку данных - рекомендую не
> вставлять с помошью "INSERT", а подготовить файл (можно
> даже текстовый), а потом сделать import средствами СУБД
> думаю в MSSQL это можно сделать.
вот над этим я и подумываю... есть подводные камни...
← →
Пуртик (2004-10-07 14:30) [8]Решил:
insert into sql_Table(FieldSql1, ...)
SELECT FieldFox1, ...
FROM
OPENROWSET("MSDASQL.1","Driver={Microsoft Visual FoxPro Driver}; UID="";pwd="";SourceDB=D:\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes; Collate=Russian;Null=No;Deleted=No;",
"select * from d:\work\table.dbf")
20000 записей - 6 сек :)
← →
Leksiy © (2004-10-07 16:45) [9]:) дуй на SQL Server 72500 записей 30 полей :) 7.65 ... секунд :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c