Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.10.30;
Скачать: [xml.tar.bz2];

Вниз

поиск в локальной БД   Найти похожие ветки 

 
.dzmitry   (2011-07-11 12:01) [0]

Есть локальная БД (EvaluateDB) в таблице которой нужно искать значения в индексном поле Id (1 000 000 записей). Как добиться максимального быстродействия при поиске? Что будет быстрее работать FindKey, Locate, Lookup?


 
.dzmitry   (2011-07-11 12:15) [1]

По моим тестам поиск через FindKey быстрее


procedure TForm1.Button1Click(Sender: TObject);
var
 I, N: Integer;
 T: Cardinal;
begin
 T := GetTickCount;
 for I := 1 to 5000 do
 begin
   Randomize;
   N := Random(1000000);
   TestTable.FindKey([N]);
   //TestTable.Locate("Id", N, []);
   //TestTable.Lookup("Id", N, "Id");

 end;
 ShowMessage(IntToStr(GetTickCount - T));

 //
 // - FindKey - 141 ms
 // - Locate  - 164 ms
 // - Lookup  - 172 ms
end;


 
Anatoly Podgoretsky ©   (2011-07-11 12:24) [2]

FindKey не везде работает.
Lookup не совсем поиск, это выборка.

Я лично предпочитаю чистую выборку SELECT ..., меня особо скорость не интересует, а интересует надежность и универсальность.

А что поиск осуществляется 1  000 000 раз что ли?


 
.dzmitry   (2011-07-11 13:05) [3]

В принципе может и 1 000 000 раз. пишу функцию синхронизации таблицы БД с xml-файлом по полю Id. Из xml-файла получаю Id, если запись с таким Id существует в таблице БД - обновить определенные поля этой записи данными из xml-файла, если не существует - добавить новую запись, т.е. нужно каждый раз проверять существование записи с определенным значением Id.


 
Anatoly Podgoretsky ©   (2011-07-11 13:08) [4]

Умрешь дожидаться окончания работы программы.
Сделай лучше правильный SELECT


 
Dennis I. Komarov ©   (2011-07-11 13:30) [5]

... и правильный INSERT



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
15-1309643620
eXAAAXe
2011-07-03 01:53
2011.10.30
Кличко-Хей. Прямой эфир.


15-1309984198
Юрий
2011-07-07 00:29
2011.10.30
С днем рождения ! 7 июля 2011 четверг


2-1310428972
Gu
2011-07-12 04:02
2011.10.30
%windir% и другие переменные


11-1238569778
Дмитрий
2009-04-01 11:09
2011.10.30
Не компилируется KOLComObj


15-1309877734
oleg1963lora
2011-07-05 18:55
2011.10.30
Как назвать UltraISO, Daemon и т.д. общим словом?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский