Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.039 c
14-1098194347
Ega23
2004-10-19 17:59
2004.11.07
Армейское. Зацепило сильно.


9-1087491097
Zak3D[@Tm]
2004-06-17 20:51
2004.11.07
Анимированный персонаж.


1-1098455451
DelphiLexx
2004-10-22 18:30
2004.11.07
Переименовать производителя проги


1-1098275631
СержК
2004-10-20 16:33
2004.11.07
Как отследить из приложения - что на машине запущен Excel?


1-1098438349
NATA
2004-10-22 13:45
2004.11.07
Файлы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский