Форум: "Базы";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
ВнизБыстрота поиска Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c