在iPad中有10000条记录的Sqlite性能

时间:2013-02-26 12:03:39

标签: ios ipad sqlite fmdb

我正在为FMDB wrapper应用程序使用iPad类。我有table,其中包含近10000条记录。每条记录有140个字段。我正在使用Modal class来存储检索到的值,例如

 NSString *query = [NSString stringWithFormat:@"select * from table"];
 FMResultSet *results = [db executeQuery:query];
 while([results next]) {
    ModalClass *modal = [[ModalClass alloc] init];
    [modal setField1:value1];
    [modal setField2:value2];
    [modal setField3:value3];
    [modal setField4:value4];
    .
    .
    .
    .
    .
    [modal setField139:value139];
    [modal setField140:value140];

    [array addObject:modal];
 }

我使用了一些我知道的选项performSelectorOnMainThreaddispatch_async()和其他一些多线程技术。但没有什么能帮助我提高效率。

模拟器中, 5秒。但是当谈到设备时,它几乎需要 20秒

数据库由客户提供,因此我无法更改或修改任何表格。

任何人都可以帮助我提高效率。等待 20秒是非常恶心的。

感谢。

1 个答案:

答案 0 :(得分:2)

您正在以错误的方式解决问题。 UITableView将调用data source以允许您填充单元格。使用这些方法仅加载所需的行数据,而不是前面的所有10,000行。

我通常使用一种简单的缓存方法来避免在tableview中为不同的单元重复加载同一行,但是你最初不需要担心(如果你觉得数据库是被打得太厉害了。)