0

我们有一个 iOS 应用程序,它必须从远程服务器(JSON 格式)下载大量用户数据,然后将这些数据插入本地 SQLite 数据库。因为数据太多,插入过程需要5分钟以上才能完成,这是不可接受的。该过程必须少于 30 秒。

我们已经确定了一个潜在的解决方案:让远程服务器将用户的数据存储在 SQLite 数据库中(在远程机器上)。该数据库被压缩,然后由应用程序下载。因此,应用程序将不必进行任何数据插入,从而使该过程更快。

我们的远程服务器正在运行 PHP/MySQL。

我的问题:

  • 在远程服务器上创建 SQLite 数据库最快和最有效的方法是什么?
  • 是否可以将 MySQL 查询直接输出到 SQLite 表中?
  • 是否可以创建一个临时 MySQL 数据库,然后将其转换为 SQLite 格式?
  • 还是我们必须获取 MySQL 查询输出并将每条记录插入 SQLite 数据库?

任何建议将不胜感激。

4

1 回答 1

2

我认为最好看看为什么插入过程需要 5 分钟。

如果您在 SQLite 中没有正确执行此操作,则每个插入语句都将在单独的事务中执行。众所周知,这非常缓慢。在一个 SQLite 事务中完成所有插入要好得多。即使您正在谈论很多记录,这也应该使插入过程非常快。

在伪代码中,您需要执行以下操作:

SQLite.exec('begin transaction');
for (item in dataToInsert) {
    SQLite.exec('insert into table values ( ... )');
}
SQLite.exec('end transaction');

顺便说一句,如果您想从 PHP 创建 SQLite 数据库,这同样适用。

您可以在这里阅读很多相关信息:提高 SQLite 的每秒插入性能?

于 2013-07-26T12:15:09.410 回答