Форум: "Начинающим";
Текущий архив: 2011.01.23;
Скачать: [xml.tar.bz2];
Внизsql запрос выполняется медленнее lookup Найти похожие ветки
← →
LDV (2010-11-02 16:23) [0]написал тестовое приложение, которое пробегает по всем записям таблицы "Items", передает значение поля "item_id" в качестве параметра в функцию get, которая возвращает значение поля в таблице "Content" исходя из переданного item_id.
Сделал 2 варианта поиска:
1-й через запрос
procedure TFormTest.Test;
function get_val(const fld_name: string; item_id: Integer): string;
begin
Ftmp_query.DatabaseName := cmp_db.DataBaseName;
Ftmp_query.SessionName := cmp_db.SessionName;
Ftmp_query.SQL.Text := Format("SELECT %s FROM content WHERE item_id = %d",
[fld_name, item_id]);
Ftmp_query.Open;
Result := Ftmp_query.Fields[0].AsString;
end;
begin
Fquery_items.First;
while not Fquery_items.Eof do
begin
get_val("item_id", Fquery_items[0].AsInteger);
Fquery_items.Next;
end;
end;
2-й c использование Lookup
procedure TFormTest.Test;
function get_val(const fld_name: string; item_id: Integer): string;
begin
Result := Fquery_content.Lookup("item_id", item_id, fld_name);
end;
begin
Fquery_items.First;
while not Fquery_items.Eof do
begin
get_val("item_id", Fquery_items[0].AsInteger);
Fquery_items.Next;
end;
end;
При пробеге 5000 записей вариант с lookup выполняется в 2,5 раза быстрее, почему?
← →
clickmaker © (2010-11-02 17:01) [1]а что странного? лукап выполняется в памяти, накладных расходов на связь с базой и запрос из нее нету
← →
12 © (2010-11-02 17:01) [2]а так?
procedure TFormTest.Test;
function get_val(item_id: Integer): string;
begin
Ftmp_query.close
Ftmp_query.parametrs.parambyname("p2").asinteger := item_id;
Ftmp_query.Open;
Result := Ftmp_query.Fields[0].AsString;
end;
begin
Fquery_items.First;
Ftmp_query.DatabaseName := cmp_db.DataBaseName;
Ftmp_query.SessionName := cmp_db.SessionName;
Ftmp_query.SQL.Text := "SELECT item_id FROM content WHERE item_id = :p2";
Ftmp_query.prepare;
while not Fquery_items.Eof do
begin
get_val(Fquery_items[0].AsInteger);
Fquery_items.Next;
end;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c