Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Как ускорить закачку?   Найти похожие ветки 

 
Пуртик   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-1098360149
Максим
2004-10-21 16:02
2004.11.07
DLL&ModalForm - Возвращение значения от DLL


1-1098281680
~Shaman~
2004-10-20 18:14
2004.11.07
Генератор отчётов


14-1097955597
Nix
2004-10-16 23:39
2004.11.07
Как узнать величину перемещения курсора мыши?


1-1098765625
hyper_omsk
2004-10-26 08:40
2004.11.07
несколько файлов в один


14-1098274091
Drakosha
2004-10-20 16:08
2004.11.07
.NET