![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как оптимизировать поиск по БД? [D6, XP]
Neo © (2007-10-12 22:24:00)Нужно оптимизировать поиск по БД, сод-ей примерно полмиллиона записей - посчитать какие позиции сколько раз повторяются. Для начала думаю оптимизировать поиск повторений для 1 позиции (сейчас это занимает примерно 1,5 минуты), а потом уже по всей базе, т.к. с такой скоростью проверки поиск повторов для всех позиций займет слишком много времени - а нужно уложиться хотя бы часов в 7-8. Буду очень признателен за помощь! привожу код - открытие базы и поиск -
1) Открытие
Query1.Active:=false;
Query1.DatabaseName:=Form2.LabeledEdit1.Text;
Query1.SQL.Text:='SELECT запрос FROM таблица1.db';
DataSource1.Dataset:=Query1;
Query1.Active:=true;
DBGrid1.Visible:=true;
2) Поиск
DBGrid1.Visible:=false;
KOLVO:=Query1.RecordCount;
POVTOR:=0;
ZZ:=LabeledEdit1.Text;
k:=0;
for i:=0 to KOLVO do //главный цикл
if (Query1.FieldByName('запрос').Value)= ZZ then POVTOR:=POVTOR+1;
LabeledEdit2.Text:=IntToStr(POVTOR);
Query1.Next;
if i=10000*k then begin Form1.Refresh; k:=k+1; end;
Application.ProcessMessages;
if Application.Terminated then Exit;
end;
Desdechado (2007-10-13 17:30:00) [1]Ping (13.10.07 17:07) [8]
Именно об этом я в [1] и говорил.
Ping (2007-10-13 17:07:00) [2]А как насчет просто сгруппировать?
SELECT [Запрос], Count(*)
FROM [Таблица1]
GROUP BY [Запрос]
Desdechado (2007-10-13 15:50:00) [3]lod (13.10.07 15:24) [6]
Слишком безапелляционное заявление.
Судя потаблица1.db, это парадокс, и АДО тут как зайцу стоп-сигнал.
Locate есть и в родных компонентах, в только здесь он 100 лет не нужен, так же как и Filter.
И SQL здесь не проще, а просто правильней. Да и быстрее.
lod (2007-10-13 15:24:00) [4]Вопервых не используй BDE а используй ADO компоненты.
Во вторых как тебе говорили осуществляй поиск через запрос так намного проще SQL для этого и предназначен, на кройняк можно воспользваться методом Locate, который есть в ADO или свойвствами filter.
А то что ты тут понаписал полная чуш.
Германн (2007-10-13 00:52:00) [5]
> Johnmen © (13.10.07 00:39) [4]
Значит автор спёр свой ник :-)
Johnmen (2007-10-13 00:39:00) [6]
> Германн © (13.10.07 00:29) [3]
> В Матрице наверно. :-)
Не, там ребята реальные реально программировали. Вон та в красном чего стоит!
Германн (2007-10-13 00:29:00) [7]
> И где такому учат?
В Матрице наверно. :-)
Johnmen (2007-10-13 00:19:00) [8]Мама дорогхая...
Это же крыша может съехать от такого глюкадрома...
И где такому учат?
Desdechado (2007-10-12 22:55:00) [9]Тяжелый случай. Для такой цели есть индексы и запрос SELECT Count(*)