Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
ВнизКак оптимизировать поиск по БД? Найти похожие ветки
← →
Neo © (2007-10-12 22:24) [0]Нужно оптимизировать поиск по БД, сод-ей примерно полмиллиона записей - посчитать какие позиции сколько раз повторяются. Для начала думаю оптимизировать поиск повторений для 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-12 22:55) [1]Тяжелый случай. Для такой цели есть индексы и запрос SELECT Count(*)
← →
Johnmen © (2007-10-13 00:19) [2]Мама дорогхая...
Это же крыша может съехать от такого глюкадрома...
И где такому учат?
← →
Германн © (2007-10-13 00:29) [3]
> И где такому учат?
В Матрице наверно. :-)
← →
Johnmen © (2007-10-13 00:39) [4]
> Германн © (13.10.07 00:29) [3]
> В Матрице наверно. :-)
Не, там ребята реальные реально программировали. Вон та в красном чего стоит!
← →
Германн © (2007-10-13 00:52) [5]
> Johnmen © (13.10.07 00:39) [4]
Значит автор спёр свой ник :-)
← →
lod (2007-10-13 15:24) [6]Вопервых не используй BDE а используй ADO компоненты.
Во вторых как тебе говорили осуществляй поиск через запрос так намного проще SQL для этого и предназначен, на кройняк можно воспользваться методом Locate, который есть в ADO или свойвствами filter.
А то что ты тут понаписал полная чуш.
← →
Desdechado © (2007-10-13 15:50) [7]lod (13.10.07 15:24) [6]
Слишком безапелляционное заявление.
Судя потаблица1.db
, это парадокс, и АДО тут как зайцу стоп-сигнал.
Locate есть и в родных компонентах, в только здесь он 100 лет не нужен, так же как и Filter.
И SQL здесь не проще, а просто правильней. Да и быстрее.
← →
Ping (2007-10-13 17:07) [8]А как насчет просто сгруппировать?
SELECT [Запрос], Count(*)
FROM [Таблица1]
GROUP BY [Запрос]
← →
Desdechado © (2007-10-13 17:30) [9]Ping (13.10.07 17:07) [8]
Именно об этом я в [1] и говорил.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c