Главная страница
    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.038 c
4-1096739153
Евгений2
2004-10-02 21:45
2004.11.07
Как определить, что окно что-то выполняет?


10-1053161214
From_X
2003-05-17 12:07
2004.11.07
Можно ли организовать двухстороннюю связь в корбе?


14-1098088255
les
2004-10-18 12:30
2004.11.07
serversocket


9-1089550125
ПсихЪ_копия
2004-07-11 16:48
2004.11.07
Геометрия на плоскости


1-1098622662
Steelman
2004-10-24 16:57
2004.11.07
размер круга в RadioButton





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский