我掃描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