Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
8-1091957143
Delphi5.01
2004-08-08 13:25
2004.11.07
... края силуэта ... плавно переходили в фон


3-1097189230
Black
2004-10-08 02:47
2004.11.07
Как добавлять новые столбцы в таблицу ADO?


1-1098264904
Kogor
2004-10-20 13:35
2004.11.07
Тормоза с чтением каритнки в VCL вторым потоком


3-1096816746
Muchacho
2004-10-03 19:19
2004.11.07
Unicode в InterBase


14-1097895529
080D:07BBh
2004-10-16 06:58
2004.11.07
На форуме осенее обострение что ли?




   Наверх