Какой из вариантов поиска будет быстрее? Дайте советов по оптимизации.
PHP код:
function Tdatamodule_Connection.FindById(ItemId: Integer): Integer;
begin
Result := -1;
if ConnectionStatus = csConnected then
with cmp_Query_ do
try
SQL.Text := Format(const_sql_FindById, [ItemId]);
Open;
Result := FieldByName(const_field_item_id).AsInteger;
if Result = 0 then begin
if SelectionStatus = ssByField then
CurItemByKey := FCurItemByField;
end else
CurItemByKey := ItemId;
SelectionStatus := ssByKey;
SQL.Text := const_sql_AllModels;
except
on E: Exception do
LastMsgError := E.Message;
end
else
LastMsgError := const_msg_ErrorConnection;
end;
или
PHP код:
function Tdatamodule_Connection.FindById(ItemId: Integer): Integer;
begin
Result := -1;
if ConnectionStatus = csConnected then
with cmp_Table_ do
try
Open;
Result := Integer(FindKey([ItemId]) and (FieldByName(const_field_group_id).AsInteger <> 0)
and (FieldByName(const_field_flags).AsInteger <> 1));
if Result = 0 then begin
if SelectionStatus = ssByField then
CurItemByKey := FCurItemByField;
end else
CurItemByKey := ItemId;
SelectionStatus := ssByKey;
except
on E: Exception do
LastMsgError := E.Message;
end
else
LastMsgError := const_msg_ErrorConnection;
end;