首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓SQLite性能指标

安卓SQLite性能指标
EN

Stack Overflow用户
提问于 2010-11-29 03:20:48
回答 3查看 17.5K关注 0票数 27

我的安卓应用程序使用的是一个在用户PC上生成并传输到设备上的SQLite数据库。这一切都是有效的,但我没有预料到会有多少用户拥有真正大量的数据。在这些情况下,UI非常缓慢,因为它等待获取数据。

我已经尝试了一些技巧,我“肯定”会加快速度,但似乎没有任何明显的效果。我的查询几乎都非常简单,通常是WHERE子句的单个"col=val“和列中的整数数据。所以我不能对这些查询做太多的事情。

最新的,我不是SQL专家,是在PC上使用"CREATE INDEX“命令,相信这些索引用于加速数据库搜索。索引显着增加了数据库文件的大小,所以我很惊讶它似乎对我的应用程序的速度没有任何影响!一个屏幕在没有索引的情况下需要8秒才能填满,即使有了索引也需要大约8秒。我希望能把事情降到至少一半。

在这一点上,我想知道的是,安卓上的SQLite实现是否使用了数据库索引,或者我只是在浪费空间生成它们。有人能回答这个问题吗?

另外,还有没有其他东西可以加快访问速度呢?

(无论它有什么价值,在绝对的基础上,用户没有什么可抱怨的。到目前为止,我的最坏情况下的用户有生成630,000条记录(15个表)的数据,所以只有这么多可能!)

Doug戈登GHCS系统

EN

回答 3

Stack Overflow用户

发布于 2010-11-29 05:30:17

如果索引适合查询,SQLite将使用该索引。使用EXPLAIN

代码语言:javascript
复制
EXPLAIN QUERY PLAN ... your select statement ...

查看SQLite使用的是什么索引。查询计划基于对数据库内容的一些假设。您也许能够通过使用ANALYZE来改进计划

票数 12
EN

Stack Overflow用户

发布于 2010-12-06 08:56:43

通过以一种更高效的方式查询数据库,我终于能够获得巨大的性能提升。例如,在构建信息数组时,我以前使用"WHERE _id = n“类型选择器查询数据库中需要的每一行。但通过这种方式,我发出了十几个或更多的查询,一次一个。

相反,我现在构建了一个所需IN的列表,然后通过一个查询"WHERE _id IN (n1,n2,n3,...)“获得所有这些IN并遍历返回的游标。执行此操作和其他一些结构优化后,最大的数据库现在查看起来几乎与更普通的情况一样快。

票数 12
EN

Stack Overflow用户

发布于 2010-11-29 03:47:25

每次你要执行某种操作(数据库查找、长时间运行的计算、web请求等)花费超过几百毫秒的时间,您应该考虑将其包装在AsyncTask中。

Painless Threading是一篇关于这个主题的很好的文章,所以我建议您仔细研究一下。

本文讨论了安卓应用程序使用的线程模型,以及应用程序如何通过派生工作线程来处理长时间运行的操作,而不是在主线程中处理它们,从而确保最佳的UI性能。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4298542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档