Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何提高android版SQLite数据库的性能_Android_Android Sqlite - Fatal编程技术网

如何提高android版SQLite数据库的性能

如何提高android版SQLite数据库的性能,android,android-sqlite,Android,Android Sqlite,关于stackoverflow,与此主题相关的问题很少,但我没有得到正确的答案。我对平面文件的性能有些怀疑,使用平面文件而不是SQLite是否更好 我获取了AndroidSQLite的性能统计数据 我有一个有21列的表的性能统计数据 任何人都可以建议如何减少插入时间 Records Write time in ms Read time in ms 1000 67813 608 1000 66340

关于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
平面文件
SQLite

所以,任何人请建议我如何改进SQLite这次的性能

我使用的是使用ContentValues和database close的simple
数据库open insert

请告诉我一些如何改进这些统计数据的方法

使用下面的答案后更新了性能统计信息。我仍然希望提高这些性能

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 

谢谢

我相信您正在使用循环插入1000或10000。 使用事务,它将大大减少写入时间。我已经遇到了这样一个问题,它将我的案例中的写入时间从大约30秒减少到大约不到1秒

看一看

基本上,你应该做的是:

db.beginTransaction();
试一试{
for(int i=0;i
如果你想优化插入时间,就应该发布插入代码。平面文件和SQLite有不同的目标,一个是存储和批量检索,SQLite用于快速检索(大多数情况下比文本文件快)使用事务进行大插入同样,平面文件也很好,但前提是你不需要queries@njzk2是的,我同意你的观点。平面文件只适合读写。我必须在哪里使用插入查询?在这里我不需要在代码中打开数据库和关闭数据库?非常感谢,这确实改善了我的统计数据。你能不能建议我如何用其他方法减少阅读时间?在for循环中执行insert查询。是的,当然你应该打开和关闭数据库。但是关于阅读时间,我不知道如何减少阅读时间,希望我能帮上忙。你的回答帮助了我很多,你可以看到上面的结果