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

Вниз

Быстрота поиска   Найти похожие ветки 

 
MVVD ©   (2002-03-14 10:04) [0]

Как увеличить скорость поиска при использовании Locate для TQuery?


 
Alexandr ©   (2002-03-14 10:11) [1]

а что она у тебя низкая?


 
Johnmen ©   (2002-03-14 10:12) [2]

1. Реально получить все записи TQuery
2. Искать по integer полю
3. Не использовать параметры поиска (Locate(....,[]))


 
MVVD ©   (2002-03-14 10:15) [3]

Торможение очень сильное. Проверка наличия 7000 записей в таблице из 12000 записей занимает минут 30.


 
Johnmen ©   (2002-03-14 10:19) [4]

Используй запросы для поиска !


 
MVVD ©   (2002-03-14 10:23) [5]

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


 
Johnmen ©   (2002-03-14 10:33) [6]

А зачем кэширование ?!


 
MVVD ©   (2002-03-14 10:36) [7]

Написано, что в этом случае все изменения происходят в локальном буфере и минимизируется сетевой трафик


 
roottim   (2002-03-14 10:42) [8]

>Проверка наличия 7000 записей
Locate-ом.. в большенстве сл используется для позиционирования... но не для последовательно й обработки...
в этом сл действительно надо скл использовать


 
Johnmen ©   (2002-03-14 10:42) [9]

Локальный буфер и кэш вообще-то несколько разные вещи !

Ответ на вопрос : Johnmen © (14.03.02 10:19)


 
MVVD ©   (2002-03-14 10:43) [10]

А пример такого SQL каков?


 
Johnmen ©   (2002-03-14 10:47) [11]

SELECT ... FROM ...
WHERE <здесь условие поиска, которое ты хотел в Locate>


 
MVVD ©   (2002-03-14 10:48) [12]

Вот фрагмент:

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) [13]

select what_i_whant from mytable


 
Val ©   (2002-03-14 10:51) [14]

сорри :)
select what_i_whant from mytable
where myconditions


 
deleon   (2002-03-14 11:08) [15]

Тестировал Locate для парадокса, так вот: параметр loCaseInsensitive ускоряет поиск раза в два (даже если идет поиск по Integer полю!)


 
Johnmen ©   (2002-03-14 11:13) [16]

>deleon : Парадокс этот Paradox !!!


 
Deniz ©   (2002-03-14 12:39) [17]

А что ты делаешь в условии:
if (Dmod.qWorkK.Locate("D",nels,[]))
then begin
{ ... }
end;

Может это оно тормозит?
Проверь пошагово, какой оператор выполняется долго.


 
Val ©   (2002-03-14 13:05) [18]

MVVD © (14.03.02 10:48)
при использовании SQL-серверов лучше подобные действия производить непосредственно на сервере с помошью вью и хп

P.S. извиняюсь за повторы-глюки инета:(


 
MVVD ©   (2002-03-14 14:57) [19]

Deniz. В условии осуществляется редактирование записи, но торможение исключительно на Locate


 
Johnmen ©   (2002-03-14 15:03) [20]

>MVVD © : Ты по-прежнему не желаешь использовать ...WHERE...?
Ну почему ???


 
Deniz ©   (2002-03-14 15:05) [21]

>MVVD © (14.03.02 14:57)
Напиши код в условии.


 
Fareader ©   (2002-03-14 16:22) [22]

А ты во все 7000 записей вносишь одинаковые изменения?
Все-таки используй запросы, Locate каждый новый поиск начинает с первой записи вот и подумай ск. на это надо времени.


 
MVVD ©   (2002-03-15 08:37) [23]

Сделал SQL и на локале убыстрилось в несколько раз, но уже в сети опять заморочки.



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

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

Наверх




Память: 0.51 MB
Время: 0.009 c
1-22766
Dimedrol
2002-03-27 13:55
2002.04.08
Сборщик мусора в памяти ?


14-22830
.DelGod.
2002-02-22 19:57
2002.04.08
Вот такие дела . . .


1-22661
LiNkS
2002-03-27 21:59
2002.04.08
Как переместить в Memo курсор на опр. место в опр. строке?


1-22616
Goblinus
2002-03-26 16:40
2002.04.08
программное эмулирование управляющих клавиш


3-22580
Макз
2002-03-17 15:57
2002.04.08
computed (by) fields