Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.009 c
1-22765
PEC
2002-03-27 13:37
2002.04.08
С Англиским Худо !


1-22653
Chistyakov Victor
2002-03-28 10:42
2002.04.08
Delphi&Word


3-22521
Сержжж
2002-03-14 11:24
2002.04.08
Еще раз о подключении к уд. компу


3-22606
D'Aron
2002-03-18 16:26
2002.04.08
Сортировка в SQL


1-22692
ded_di
2002-03-26 13:53
2002.04.08
wysiwyg редактор html таблиц




   Наверх