Форум: "Начинающим";
Текущий архив: 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.004 c