【问题标题】:SQLITE bulk inserts to increase optimization with UPDATE and INSERTSQLITE 批量插入以增加使用 UPDATE 和 INSERT 的优化
【发布时间】:2013-10-10 19:05:27
【问题描述】:

我看过很多关于在 android 上使用批量插入优化 SQLITE 的帖子 目前它需要 90 秒来完成 900 次插入/更新。我在它们周围添加了 Begin/End Transaction,但只看到了微小的改进。 所以我想添加我相信的SQLiteStatement

这是我目前的代码

static ArrayList<ContentSystem> csList = new ArrayList<ContentSystem>();

..填写csList..

_dh.BeginTransaction(Table);
for(int i = 0; i < csList.size(); ++i)
{
    addItem(ma, csList.get(i), dh, Table, Key);
}
_dh.setTransactionSuccessful();
_dh.EndTransaction(Table);

public static void addItem(final MainActivity ma, ContentSystem cs,
final DatabaseHandler dh, String Table, String Key) 
{
         worked = dh.UpdateItem(cs.cv, Table, Key, cs.UUID);
         if (worked == 0) 
         {
            worked = dh.AddData(Table, cs.cv);
            if (worked <= 0) 
            {
               ErrorLogger.AddError("Error") 
            }
         }
}

我的问题是,如果我的 csList 包含约 1000 个项目并且有些已经在我的列表中,有些则不在 所以我目前正在更新,如果更新返回 0 然后我会添加

我怎样才能让这样的东西在批量语句中起作用?

更多信息

dh.更新

int wok = db.update(table, values, Key + " = ?", new String[] { Item });

dh.添加

int work = (int) db.insert(table, null, values);

ContentSystem 是一个 ContentValues 列表

【问题讨论】:

  • 参考这个帖子,太棒了-stackoverflow.com/questions/1711631/…
  • @bclymer 是的 - 这是我一直在使用的查询之一 - 我不明白如何在批量事务中进行多种类型的查询 - 我知道我需要这样做 - 这是简而言之,这表明了什么
  • 我很惊讶自从问题结束后你们可以使用线程。无论如何,由于我的声誉高得不合理,我投票决定重新开放它。也许其他人也会这样做。
  • @DanBracuk 不确定你在说什么...... bclymer 提供的链接已受到保护 - 无论如何,我正在尝试就手头的问题寻求帮助......谢谢
  • 我刚刚点击了链接,标题是“如何提高 SQLite 的性能?[关闭]”。关闭的原因是不清楚要问什么。没错,但我还是投票决定重新打开它。

标签: android mysql sql performance sqlite


【解决方案1】:

Try INSERT OR REPLACE,而不是仅仅更新或失败的更新后跟插入。

【讨论】:

  • @morty 你用这个找到了什么结果?
【解决方案2】:

您确定您的 DatabaseHandler 类中实例化的 SQLiteDatabase 对象与 _dh 相同吗?

您可能已经为 _dh 启动了一个事务,但它甚至可能不是实际执行任何工作的实例化对象。

【讨论】:

  • 这是一个答案部分 - 代码工作正常(尽管有改进的空间) - 这是一个优化问题,用于更改我的代码以使用准备好的语句和批量事务 - 数据库系统也是单线程,是的 _dh 是核心 sqlitedatabase 对象
猜你喜欢
  • 2013-01-20
  • 2013-11-19
  • 2018-02-24
  • 1970-01-01
  • 2012-10-06
  • 2014-09-12
  • 2012-11-10
  • 2019-06-24
  • 2014-01-16
相关资源
最近更新 更多