Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.005 c
2-1383552177
JustDoIt
2013-11-04 12:02
2014.11.02
SELECT vs FindKey


2-1383726473
Паша Белый
2013-11-06 12:27
2014.11.02
Как использовать 64-битный компилятор DelphiXE5?


2-1384146589
JohnKorsh
2013-11-11 09:09
2014.11.02
Содержание буфера обмена.


15-1391605296
asafr_
2014-02-05 17:01
2014.11.02
Срочно нужна работа в Санкт-Петербурге.


2-1383724334
Андрюха
2013-11-06 11:52
2014.11.02
Как работают сетевые прораммы?