繁体   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