【问题标题】:How to improve performance for SQLite database for android如何提高 android 的 SQLite 数据库的性能
【发布时间】:2012-10-09 08:40:50
【问题描述】:

stackoverflow 上与此主题相关的问题很少,但我没有得到正确的答案。我对平面文件的性能有一些疑问,使用平面文件而不是 SQLite 更好吗?

我对 Android SQLite 进行了性能统计。

我有一张有 21 列的表的性能统计信息

任何人都可以建议如何减少此插入时间。

Records  Write time in ms   Read time in ms
1000      67813                   608
1000      66340                   604
1000      64359                   609
10000     679837                  5159
10000     618062                  5110
10000     644638                  5729
10000     646878                  5890

Flat file 的时间比SQLite

所以请任何人建议我如何改进 SQLite 的时间。

我正在使用简单的database open insert using ContentValues 并关闭数据库。

请向我提出一些改进这些统计信息的建议。

使用以下答案后更新了性能统计信息。我仍然想提高这些性能。

Records    Writetime in ms         Readtime in ms   
1000        1645                       530          
1000        2497                       672          
1000        3143                       610          
10000       16356                     5243          
10000       14006                     5122          
10000       13158                     5002          
10000       14828                     5234          
100000      125525                    77622 

谢谢

【问题讨论】:

  • 如果你想优化插入时间,你应该发布你的插入代码。
  • 平面文件和SQLite有不同的目标,一个是批量检索的存储,SQLite是为了快速检索(在大多数情况下比文本文件快)
  • 使用事务处理大量插入
  • 另外,平面文件也不错,但前提是您不需要进行查询
  • @njzk2 是的,我同意你的观点。仅适用于读写的平面文件。

标签: android android-sqlite


【解决方案1】:

我相信您正在使用循环插入 1000 或 10000。 使用 TRANSACTIONS ,它将大大减少写入时间。我已经遇到过这样的问题,它把我的写入时间从大约 30 秒减少到大约不到 1 秒。

看看this

基本上,你应该做的是:

db.beginTransaction();
try{
    for(int i = 0 ; i < LENGTH ; i++ ) {
        // execute SQL
    }
    db.setTransactionSuccessful(); // marks a commit
    }
finally{
    db.endTransaction();
}

【讨论】:

  • 这里我必须在哪里使用插入查询?
  • 这里我不需要在我的代码中打开数据库和关闭数据库吗?
  • 非常感谢它确实改善了我的统计数据。你能建议我如何使用其他方式减少阅读时间吗?
  • 在 for 循环中执行插入查询。是的,当然你应该打开和关闭数据库。但是关于阅读时间,我不知道如何减少它,希望对我有所帮助。
  • 你的回答对我帮助很大,你可以在上面看到结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2010-10-01
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
相关资源
最近更新 更多