HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在SQLite中存储大量数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Improve INSERT-per-second performance of SQLite?9个
我必须在sqlite数据库添加大量数据,并且需要一些建议如何在iOS中执行该功能.我必须将大约1 GB的数据从服务器同步到iPhone sqlite数据库.

我需要其他方法在iOS端的数据库中存储快速数据.我试图逐个存储数据,但同步和存储数据需要花费太多时间.

解决方法

@H_450_8@ 我建议你阅读这个Stack Overflow问题:

How do I improve the performance of SQLite?

一般来说,这是如何提高sqlite性能一个非常好的看法,当我遇到速度问题试图在iOS上的sqlite数据库中插入100,000条记录时,它非常有用.

具体而言,事务的使用大大降低了整体插入速度.这是一小段示例代码,您可以看到我的意思:

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,&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],sqlITE_TRANSIENT);  // Region
        sqlite3_bind_text(insertStatement,2,[[row objectATindex: 1] UTF8String],sqlITE_TRANSIENT);  // DiStrict
        sqlite3_bind_text(insertStatement,3,[[row objectATindex: 2] UTF8String],sqlITE_TRANSIENT);  // Territory

        if (sqlite3_step(insertStatement) != sqlITE_DONE) {
            break;
        }

        sqlite3_clear_bindings(insertStatement);
        sqlite3_reset(insertStatement);
    }
}

sqlite3_exec(mapDB,"END transaCTION",&sqliteError);

sqlite3_finalize(insertStatement);

带有BEGIN和END transaCTION语句的sqlite3_exec是神奇的.

大佬总结

以上是大佬教程为你收集整理的ios – 在SQLite中存储大量数据全部内容,希望文章能够帮你解决ios – 在SQLite中存储大量数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。