![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстрота поиска [D5, IB5.x]
MVVD © (2002-03-14 10:04:00)Как увеличить скорость поиска при использовании Locate для TQuery?
MVVD (2002-03-15 08:37:00) [1]Сделал SQL и на локале убыстрилось в несколько раз, но уже в сети опять заморочки.
Fareader (2002-03-14 16:22:00) [2]А ты во все 7000 записей вносишь одинаковые изменения?
Все-таки используй запросы, Locate каждый новый поиск начинает с первой записи вот и подумай ск. на это надо времени.
Deniz (2002-03-14 15:05:00) [3]>MVVD © (14.03.02 14:57)
Напиши код в условии.
Johnmen (2002-03-14 15:03:00) [4]>MVVD © : Ты по-прежнему не желаешь использовать ...WHERE...?
Ну почему ???
MVVD (2002-03-14 14:57:00) [5]Deniz. В условии осуществляется редактирование записи, но торможение исключительно на Locate
Val (2002-03-14 13:05:00) [6]MVVD © (14.03.02 10:48)
при использовании SQL-серверов лучше подобные действия производить непосредственно на сервере с помошью вью и хп
P.S. извиняюсь за повторы-глюки инета:(
Deniz (2002-03-14 12:39:00) [7]А что ты делаешь в условии:
if (Dmod.qWorkK.Locate("D",nels,[]))
then begin
{ ... }
end;
Может это оно тормозит?
Проверь пошагово, какой оператор выполняется долго.
Johnmen (2002-03-14 11:13:00) [8]>deleon : Парадокс этот Paradox !!!
deleon (2002-03-14 11:08:00) [9]Тестировал Locate для парадокса, так вот: параметр loCaseInsensitive ускоряет поиск раза в два (даже если идет поиск по Integer полю!)
Val (2002-03-14 10:51:00) [10]сорри :)
select what_i_whant from mytable
where myconditions
MVVD (2002-03-14 10:48:00) [11]Вот фрагмент:
DMod.qWorkK.Active := False;
DMod.qWorkK.SQL.Clear;
DMod.qWorkK.SQL.Add("Select * From PLAN1");
DMod.qWorkK.SQL.Add(" Order by D ");
DMod.qWorkK.Active := True;
DMod.qWorkK.First;
DMod.qPL.Active := False;
DMod.qPL.SQL.Clear;
DMod.qPL.SQL.Add("Select * From BALANS");
DMod.qPL.SQL.Add(" Order by NLS ");
DMod.qPL.Active := True;
DMod.qPL.First;
Dmod.qPL.First; While(not Dmod.qPL.EOF) do begin {While}
nels := Trim(Dmod.qPL.FieldByName("NLS").AsString);
if (Dmod.qWorkK.Locate("D",nels,[]))
then begin
end;
Dmod.qPL.Next;
end;
Val (2002-03-14 10:48:00) [12]select what_i_whant from mytable
Johnmen (2002-03-14 10:47:00) [13]SELECT ... FROM ...
WHERE <здесь условие поиска, которое ты хотел в Locate>
MVVD (2002-03-14 10:43:00) [14]А пример такого SQL каков?
Johnmen (2002-03-14 10:42:00) [15]Локальный буфер и кэш вообще-то несколько разные вещи !
Ответ на вопрос : Johnmen © (14.03.02 10:19)
roottim (2002-03-14 10:42:00) [16]>Проверка наличия 7000 записей
Locate-ом.. в большенстве сл используется для позиционирования... но не для последовательно й обработки...
в этом сл действительно надо скл использовать
MVVD (2002-03-14 10:36:00) [17]Написано, что в этом случае все изменения происходят в локальном буфере и минимизируется сетевой трафик
Johnmen (2002-03-14 10:33:00) [18]А зачем кэширование ?!
MVVD (2002-03-14 10:23:00) [19]Использую кэширование, параметры поиска не используются, поиск по одному полю (балансовый счет) и никакого толка
Johnmen (2002-03-14 10:19:00) [20]Используй запросы для поиска !