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

Вниз

ADOQuery.SQL.Add   Найти похожие ветки 

 
MakNik ©   (2004-03-11 14:48) [0]

Может кто знает в чем причина медленной работы ADOQuery.SQL.Add("...")? Проблема в том, что на некоторых компах эта операция очень тормозит. Как можно обойти этот глюк?


 
Vlad ©   (2004-03-11 14:53) [1]


> MakNik ©   (11.03.04 14:48)  

Уверен что именно эта строчка - причина торможения, а не Open какой нибудь или ExecSQL ?


 
V-A-V ©   (2004-03-11 15:23) [2]

...
 ADOQuery.Close;
 ADOQuery.SQL.Text:= "Select Field1, Field2 From MyTable Where ...";
 ADOQuery.Open;
...

попробу так.


 
VAleksey ©   (2004-03-11 15:28) [3]

Тормозит не эта операция.


 
V-A-V ©   (2004-03-11 15:33) [4]

Да я знаю, что не эта...


 
MakNik ©   (2004-03-11 15:39) [5]

Отрывок кода:
...
While Not ADO.Eof do
begin
 ADOQuery.SQL.Add("  Update ...");
 ADOQuery.SQL.Add("...");
 ...
ADO.Next;
end;
ADOQuery.ExecSQL;


То, что тормозит на Add, это проверено (вставлял логирование)... Интересно, что время выполнения этой операции возрастает от сотых секунда в начале цикла, до 4 секунд после выполнения последней итерации...


 
V-A-V ©   (2004-03-11 15:47) [6]

А ADO это что какая-то таблица?
Eсли это так то это изврат, бегать по таблице и составлять неведая откуда текст запроса для ADOQuery.


 
MakNik ©   (2004-03-11 15:53) [7]


> V-A-V ©  

... меня больше интересует почему Add медленно работает...


 
sniknik ©   (2004-03-11 15:55) [8]

глюк в точках, на точках всегда тормозит (время уходит в точку), чем их больше тем больше времени уходит, избавься от них.

это даже не бред.

бред вот это, добавлять в цикле новые значения к списку и удивляться почему на пустом списке операция выполняется быстрее чем на переполненном. после искать (успешно) крайнего, это у нас компонент ADOQuery почемуто, а не сам любимый который логику извращенную имеет (а та в ответ ...:).


 
V-A-V ©   (2004-03-11 15:58) [9]

sniknik ©

браво...


 
VAleksey ©   (2004-03-11 16:01) [10]


> sniknik ©   (11.03.04 15:55) [8]

5 баллов.
Что сказать - мастер. Очень похоже...


 
V-A-V ©   (2004-03-11 16:05) [11]

Похоже MakNik никогда не выкидывает мусор из "корзины", но онаже не бездонная....


 
MakNik ©   (2004-03-11 16:53) [12]

... да нет, дело какраз в ADOQuery!!! точнее в ADOQuery.SQL (типа TStrings)... если накапливать текст скрипта в отдельной переменной типа TStrings, то все работает быстро, а вот если работать непосредственно с ADOQuery.SQL... , то - тормоз...
(... а "точки" и скрипт я привел как пример того, где тормозит, а не как пример алгоритмизации... )


 
sniknik ©   (2004-03-11 17:19) [13]

есть такая полезная галочка в опциях проекта USE Debug DCUs, поставь ее, и поставь брейпоинт на ADOQuery.SQL.Add("  Update ..."); дальше дело техники по остановке нажимаем F7 и попадаем в..., нет не в метод добавления строки, а в метод GetSQL, потому как SQL property типа TStrings, так все и происходит сначало получение списка после добавили строку, следующее - получение списка (увеличивщегося) добавление строки ....
но переделывать компонент не нужно нужно сменить логику, чтобы не закачивать туда по n-строк (нет n мало, m-строк :), а пользоваться параметрами к примеру и одноразово внесенными запросами. (и не ADOQuery а ADODataSet/ADOCommand)



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.038 c
3-1081841088
skostigin
2004-04-13 11:24
2004.04.11
Delphi 6, InterBase


1-1079952463
Dimbas
2004-03-22 13:47
2004.04.11
TWebBrowser и cursor


1-1080018757
Pr0ger
2004-03-23 08:12
2004.04.11
Ассоциирование типов файлов (расширений)


4-1079071348
KME
2004-03-12 09:02
2004.04.11
МЕНЮ НА WINAPI


3-1079085790
Романов Р.В.
2004-03-12 13:03
2004.04.11
Сброс буфера в базу