【发布时间】:2017-05-15 06:10:01
【问题描述】:
我的问题:
我正在处理Android application(使用SQLite),我必须从服务器获取大量数据并将store 它发送到DB。目前,我正在从服务器获取一个list,循环遍历它,然后将inserting 逐一转换为DB。但在每条记录insertion 之前,我正在检查它是否已经存在于DB 中。如果是,那么我update 那条记录。这发生在application (我的应用程序有超过 50 个表)。现在一周前我注意到这个过程需要额外的时间。我的意思是我们从服务器得到一个列表,我们循环遍历它并为每条记录运行两个queries(一个检查它是否已经存在,一个用于insert或@987654336 @)。
现在我需要optimise 它。我知道批量插入,我正在考虑一次插入所有记录。但其中有一个问题。我需要检查记录是否已经存在于DB 中。如果是,则 update 否则 insert。我知道insetOrReplace,但它不符合我的目的。我需要更新一些特定的记录而不是替换所有内容(如果数据已经在数据库中并由用户从本地应用程序填充)。
那么它的solution 是什么?我是否必须通过一个查询检查DB 中已经存在哪个records,然后对update 记录运行一个查询,对剩余的insert 运行一个查询?但它仍然是三个查询?只能通过一个查询来解决吗?或者任何其他解决方案?
【问题讨论】:
-
你知道
SQLTransaction吗? Check this -
你可以使用 #realm sdk news.realm.io/news/realm-for-android .. 它比 sqlite 更高效,但它增加了你的应用程序大小更多.. 你的需求肯定会通过领域来满足。
-
要使用领域我必须改变很多结构。而且还有我的大量表格,它会增加应用程序的大小..
标签: java android sql database sqlite