簡體   English   中英

FMDB-提高FMResultSet速度

[英]FMDB - Improve FMResultSet speed

此代碼需要很長時間才能運行。 我大約有100,000條記錄。 每個步驟花費的時間大致相同。...從FMResultSet獲取結果並將其讀取到3個數組中。 我嘗試使用兩個選擇語句。 一種獲取結果計數,然后在mutableArray中分配該數量。 無性能差異。 有提高速度的建議嗎?

FMResultSet *results = [database executeQuery:@"SELECT FriendlyName, Serial, Barcode FROM Inventory, Company WHERE Inventory.friendlyName <> '' AND Company.CompanyID = Inventory.companyID AND Company.CompanyName = ?", selectedCompany];

arrayFriendlyName =[[NSMutableArray alloc]init];
arraySerial = [[NSMutableArray alloc]init];
arrayBarcode = [[NSMutableArray alloc]init];


while([results next]) {

    [arrayFriendlyName addObject:[results stringForColumn:@"FriendlyName"]];
    [arrayBarcode addObject:[results stringForColumn:@"Barcode"]];
    [arraySerial addObject:[results stringForColumn:@"Serial"]];

}

[database close];

根據您的數據庫結構,在涉及數千行時,圍繞sqlite進行的任何面向對象的包裝都可能非常慢。 您可以嘗試通過直接訪問sqlite數據庫來加快速度,而無需使用任何面向對象的包裝器。 因為您不需要任何關系(至少在示例代碼中),所以您不會丟失任何相關功能-而且它會盡可能地快。

與往常一樣,Ray Wenderlich是一個很好的參考資源: http ://www.raywenderlich.com/913/sqlite-tutorial-for-ios-making-our-app

如果您還沒有這樣做,還可以查看一下是否在查詢中設置了正確的索引-在聯接兩個表時,聯接列上沒有索引會嚴重影響性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM