Главная страница
    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.46 MB
Время: 0.044 c
15-1191378171
Slider007
2007-10-03 06:22
2007.11.04
С днем рождения ! 3 октября 2007 среда


2-1192084067
vamp_avp
2007-10-11 10:27
2007.11.04
реестр!!!


15-1190767093
DimaL
2007-09-26 04:38
2007.11.04
Связь с 1С


15-1190961599
Ega23
2007-09-28 10:39
2007.11.04
Show component captions в IDE Delphi


2-1191930542
ффф
2007-10-09 15:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский