Текущий архив: 2014.11.02;
Скачать: CL | DM;
Вниз
SELECT vs FindKey Найти похожие ветки
← →
JustDoIt (2013-11-04 12:02) [0]Почему запрос работает медленнее, чем поиск в таблице? В таблице 10000 записей, разница в скорости 80-110msc
function IDIsExists(const ID: Integer): Boolean;
var
Q: TQuery;
begin
Q := TQuery.Create(nil);
try
Q.DatabaseName := "items";
Q.SQL.Text := "SELECT * FROM item WHERE id = :id";
Q.Prepare;
Q.ParamByName("id").AsInteger := ID;
Q.Open;
Result := Q.RecordCount > 0;
finally
Q.Free;
end;
end;
function IDIsExists2(const ID: Integer): Boolean;
var
T: TTable;
begin
T := TTable.Create(nil);
try
T.DatabaseName := "items";
T.TableName := "item";
T.Open;
Result := T.FindKey([ID]);
finally
T.Free;
end;
end;
← →
RWolf © (2013-11-04 12:09) [1]Замените в запросе звёздочку на явное перечисление полей.
← →
JustDoIt (2013-11-04 12:12) [2]Заменял, чтобы возвращалось только поле id и добавлял TOP 1, все равно есть разница, не в пользу запроса.
← →
ухты (2013-11-04 12:41) [3]а как замеряли?
← →
Германн © (2013-11-04 13:13) [4]Для какого-нибудь Парадокса или ДБейза почему бы и не быть быстрее напрямую работать с файлом.
← →
Плохиш © (2013-11-04 14:11) [5]Первый вариант перебирает всю таблицу индексов и после считает количество.
Второй идёт по таблицы индексов до первого совпадения ничего не считая.
← →
брат Птибурдукова (2013-11-04 16:09) [6]
> Первый вариант перебирает всю таблицу индексов и после считает
> количество.
То есть проблема в Result := Q.RecordCount > 0?
← →
Плохиш © (2013-11-04 16:49) [7]Я понимаю, что до предлога "и" букаф больше, чем после.
← →
брат Птибурдукова (2013-11-04 17:15) [8]Не понял. Ты намекаешь, что много индексов или что я неосилил прочесть всю фразу и стал задавать глупые вопросы? Я в БД профан, просьба на это делать скидку.
← →
sniknik © (2013-11-04 18:35) [9]> Почему запрос работает медленнее, чем поиск в таблице?
есть клиент серверные база/подход, а есть файл серверные, для каждого выгоднее свои методы.
без указания, что именно используется вопрос бессмыслен.
← →
KilkennyCat © (2013-11-05 05:59) [10]я вот сейчас средствами phpmyadmin анализировал время выполнения своих запросов, довольно-таки большая разница при одном и том же вопросе. в разы. в основном, разница по времени открытия таблицы.
Получается, что сравнивать запрос и поиск без предварительной проверки, что запрос действительно выполнился максимально быстро не имеет смысла.
Скорее всего, то же самое можно сказать и про поиск.
← →
KilkennyCat © (2013-11-05 06:00) [11]
> при одном и том же вопросе
=запросе
← →
Jeer © (2013-11-06 00:14) [12]Result := Q.RecordCount > 0;
>>
Result := not Q.IsEmpty
← →
Ega23 © (2013-11-06 08:13) [13]
> Заменял, чтобы возвращалось только поле id и добавлял TOP
> 1, все равно есть разница, не в пользу запроса.
TSQL?
exists попробуй.
http://msdn.microsoft.com/ru-ru/library/ms188336.aspx
Страницы: 1 вся ветка
Текущий архив: 2014.11.02;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.003 c