Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.042 c
15-1191755189
Бисти Бойс
2007-10-07 15:06
2007.11.04
Картинки с этого сайта не показываются


8-1168494147
roughneck
2007-01-11 08:42
2007.11.04
Быстрый способ чтения Jpeg


15-1190501517
Comunicator
2007-09-23 02:51
2007.11.04
BC3.1


15-1191221279
Dimedrol
2007-10-01 10:47
2007.11.04
2 Wireless карточки. Медленная скорость между ними. Почему?


2-1192294044
Антон Шестаков
2007-10-13 20:47
2007.11.04
Привязать чужое приложение к своему





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский