[英]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.