Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > скорость поиска данных.


Автор: malxazibb 4.9.2009, 21:40
Приветствую всех?

На днях создал программу в Delphi бази данных людеи через БД Access. При поиске введя букви в Edit
программа тормозит виводa данных в DBGrid буквально по буквам. 

Может кто обяснит в чем проблема. БД весит всего 64MB.

Автор: malxazibb 5.9.2009, 07:58
Что никто не знает или никто не хочет отвечать на этот вопрос.
 smile  smile 

Автор: Keeper89 5.9.2009, 14:54
Код при изменении эдита в студию. Скорее всего выполняется запрос типа фильтра по сто раз.

Автор: Данкинг 5.9.2009, 16:32
Цитата(malxazibb @  4.9.2009,  22:40 Найти цитируемый пост)
Приветствую всех?

Согласен! smile 

Сформулируй нормально вопрос. Как ищешь - через Locate? Через AdoQuery запросом? Поля индексированы?

Автор: former 5.9.2009, 18:40
Цитата(Keeper89 @  5.9.2009,  14:54 Найти цитируемый пост)
Скорее всего выполняется запрос типа фильтра по сто раз. 

Да 100%!

malxazibb, кинь на форму таймер и делай задержку при вводе данных для поиска.

Автор: malxazibb 6.9.2009, 07:08
Спасибо всем кто не поленился и ответил на мои вопрос.
вот мои код.

Код

procedure TForm1.Edit1Change(Sender: TObject);
begin
DataModule3.ADOQuery1.Active:=false;
DataModule3.ADOQuery1.SQL.Clear;
DataModule3.ADOQuery1.SQL.Add('SELECT * FROM TMosaxleoba WHERE gvari LIKE '''+Edit1.Text+'%''and saxeli LIKE '''+Edit2.Text+'%''and mamissax LIKE '''+Edit3.Text+'%''');
DataModule3.ADOQuery1.Active:=true;
Form1.Label1.Caption:=DataModule3.ADOQuery1.FieldValues ['gvari'];
end;


 former какои код поставит на таимер?     

Автор: Данкинг 6.9.2009, 09:13
Ну правильно, если у тебя по вводу каждой буквы вызывается запрос на выборку, да ещё с тремя условиями. Если много записей - притормаживать будет, тем более, для Access'а 64 мега - это не так уже и мало.
Да, и ну и всё же сделай индексацию по тем полям, в которых осуществляется поиск.

Автор: malxazibb 6.9.2009, 11:12
Если индексациа поможет попробую.
Но может ест какои нибуд другои способс чтоби виити из такои ситуации.

Автор: Данкинг 6.9.2009, 11:58
Цитата(malxazibb @  6.9.2009,  12:12 Найти цитируемый пост)
Но может ест какои нибуд другои способс чтоби виити из такои ситуации. 

Это на каком языке было написано? smile 

Индексацию попробуй, в общем. Так всё правильно: быстрее запроса вряд ли ты что придумаешь.

Автор: malxazibb 6.9.2009, 12:17
Спасибо Данкинг за совети.

А про грамматику не надо гаварить, главное написано понятливо.

Автор: MetalFan 6.9.2009, 16:58
malxazibb, еще как надо. это русскоязычный форум.

Автор: Akella 7.9.2009, 14:05
Цитата(Данкинг @  6.9.2009,  09:13 Найти цитируемый пост)
Да, и ну и всё же сделай индексацию по тем полям, в которых осуществляется поиск.

Ты уверен, что акцесс использует индексы при использовании в запросе LIKE?


Цитата(malxazibb @  6.9.2009,  12:17 Найти цитируемый пост)
А про грамматику не надо гаварить, главное написано понятливо. 

Ы!!!??

Автор: Akella 7.9.2009, 14:32
Цитата(malxazibb @  5.9.2009,  07:58 Найти цитируемый пост)
Что никто не знает или никто не хочет отвечать на этот вопрос.

На _такие_ вопросы мало кто хочет отвечать. Детский сад какой-то.

http://forum.vingrad.ru/index.php?showtopic=48007&view=findpost&p=373806  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)