Store huge data in SQLite
本问题已经有最佳答案,请猛点这里访问。
我必须在sqlite数据库中添加大量数据,并需要一些建议,如何在iOS中实现这些功能。我必须将大约1 GB的数据从服务器同步到iPhone SQLite数据库。
我需要其他方法来在iOS端的数据库中存储快速数据。我试过逐个存储数据,但同步和存储数据花费了太多时间。
我建议您阅读这个堆栈溢出问题:
如何提高sqlite的性能?
这是一个非常仔细的了解如何提高一般sqlite的性能,当我遇到速度问题,试图将100000条记录插入到iOS的sqlite数据库时,这是非常有帮助的。
具体来说,事务的使用大大降低了整体插入速度。下面是一小段示例代码,您可以看到我的意思:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | const char *dbpath = [[Utilities pathInDocumentsFolder: MY_DATABASE] UTF8String]; const char *sql ="INSERT INTO Filters (Region, District, Territory)" \ "VALUES (?, ?, ?)"; sqlite3 *mapDB; char *sqliteError; sqlite3_stmt *insertStatement; sqlite3_open(dbpath, &mapDB); sqlite3_exec(mapDB,"BEGIN TRANSACTION", NULL, NULL, &sqliteError); if (sqlite3_prepare_v2(mapDB, sql, -1, &insertStatement, NULL) == SQLITE_OK) { for (NSArray *row in filtersArray) { sqlite3_bind_text(insertStatement, 1, [[row objectAtIndex: 0] UTF8String], -1, SQLITE_TRANSIENT); // Region sqlite3_bind_text(insertStatement, 2, [[row objectAtIndex: 1] UTF8String], -1, SQLITE_TRANSIENT); // District sqlite3_bind_text(insertStatement, 3, [[row objectAtIndex: 2] UTF8String], -1, SQLITE_TRANSIENT); // Territory if (sqlite3_step(insertStatement) != SQLITE_DONE) { break; } sqlite3_clear_bindings(insertStatement); sqlite3_reset(insertStatement); } } sqlite3_exec(mapDB,"END TRANSACTION", NULL, NULL, &sqliteError); sqlite3_finalize(insertStatement); |
带着