如何在Android中使用SQLite实现最佳性能?

我注意到有多种方法可以执行sqlite操作(查询,插入,更新,删除),有些方法可以比其他操作更快.许多网站提供不同的提示,有些与其他提示有冲突.

>似乎使用批量插入的事务比在循环中这样做要快一些.

怎么来的?使用sqlite时最好的方法是什么? sqlite在Android上如何工作?
>使用InserHelperContentValues混淆,如here所示.

InserHelper如何工作,总是会比ContentValues快吗?会以交易速度加快吗?
>混淆其他sql框架.我记得添加索引会提高与索引相关的查询性能.这对Android来说也是如此吗?这是一个好习惯吗?
>我听说在某些情况下,最好不要使用UI线程进行数据库操作.在这种情况下是否推荐?如何,DB操作有多慢?如果DB变为70MB,是否意味着它会慢得多,UI线程永远不会处理它?

解决方法

how come?

事务涉及磁盘I / O.做一个更大的磁盘I / O块比大量的磁盘I / O要少得多.

how does the InserHelper work and will it always be faster than contentValues?

引用the documentation:“这个类允许用户对表进行多个插入,但是只能编译一次sql插入语句,这可能会提高性能.

will wrapping it with a transaction speed it even further ?

大概是的

is it true for android too ?

索引可以提高查询速度,如果您为任何正在执行的查询创建正确的索引.索引总是减少插入/更新/删除速度,因为现在这些索引需要更新.这与Android无关.

is is a good thing to use ?

这是不可能在抽象中回答的.这与Android无关.

it’s best to not use the UI thread for DB operations

正确.

in which cases will it be recommended ?

绝对不要在主应用程序线程上执行任何磁盘I / O.

how slow Could DB operation become ?

世纪.可能到那时,设备会出现故障,否则会耗尽电池电量.

if the DB becomes 70MB,does it mean that it will be much slower

这取决于你用它做什么

and UI thread should never handle it ?

正确.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...