我扫描SQLite数据库寻找所有的匹配并用它更快,不断赋值或比较
OneFound:=False;
if tbl1.FieldByName('Name').AsString = 'jones' then
begin
OneFound:=True;
tbl1.Next;
end;
if OneFound then // Do something
或者我应该使用
if not(OneFound) then OneFound:=True;
它更快,只是分配OneFound的“真”,无论它分配了多少次,或者我应该进行比较,并且只是第一次更改OneFuond?
我知道更好的方法是使用FTS3,但现在我必须扫描数据库,问题更多的是设置OneFound的次数,因为遇到匹配或使用比较方法和只设置一次。
感谢
OneFound:= tbl1.FieldByName('Name')。AsString ='jones';如果OneFound然后开始...结束;将是一个更清洁恕我直言,**但**你应该考虑使用SQL你的优势。 – ComputerSaysNo 2013-04-27 17:23:57
@ComputerSaysNo改变逻辑。关于'OneFound'的一点是,在循环结尾(我们看不到),如果找到一个或多个匹配,它就是“真”。 – 2013-04-27 17:33:23
从您的声明中“扫描SQLite数据库寻找所有匹配项”我推断您正在浏览结果集中的所有记录。如果至少找到一个匹配,OneFound将被设置。你是否确定你的循环是while(不是eof())和(不是OneFound)?因为这是真正的节省时间。 – 2013-04-27 17:46:49