Android性能优化-SQLite数据库

本系列博文我想围绕在Android中的一些优化细节和大家进行分享。Android中的优化可谓又是一重任,Android不足以像PC端具有很高的内存执行空间给我们用来重量级使用开销。有限的内存资源限制了我们的扩展方向。所以,在Android中的内存优化以及性能优化成为了一个攻城狮不可忽略的重点所在。本系列博文关于性能优化我会分为一下4个模块来和大家分享:

(1)Android性能优化 一 SQLite数据库

(2)Android性能优化 一 布局优化

(3)Android性能优化 一 数据优化

(4)Android性能优化 一 网络优化

今天我们先一起来了解下在Android中的SQLite数据库操作方面有哪些需要优化和注意的地方。

Android中对于SQLite数据库的操作,系统为我们提供了很方便的实现。我们只需要创建自己的一个类继承SQLiteOpenHelper类并实现其中的onCreate方法和onUpgrade方法即可。在数据库优化方面,SQLite和其他数据库例如
Oracle、SQL Server、 My Sql等等,一样拥有相同的原理,只是SQLite是一种嵌入式的数据库,在移动端手机中使用比较合适。对于SQLite的优化,我们可以分为以下两类:

1> 索引

2> 事务

关于数据库创建索引想必大家都比较熟悉。索引给我们带来的好处是显而易见的。一个千万级的数据,索引的存在使查询数据的速度升华为一个更优的高度。同样,在查询速度提升的同时,创建索引所带来的开销也是不可忽视的。有利必有弊,所以适当的情况下创建索引,会给我们的数据查询带来质的变化。

了解了创建索引的优点和缺点,我们看下在Android中的SQLite数据库创建索引的方式:

从上面代码我们看到,在onCreate方法中只需要使用SQLiteDatabase实例db调用execSQL方法执行创建创建索引的SQL语句即可。索引的使用适合在当某个字段查询频率高,而更新操作频率低的情况下并且经常有范围的查询(>,<
>=,<=,=
)已经对order bygroup by的操作。对于SQLite创建索引我们先说到这里,对于索引还不太了解的童靴,可以看下这篇文章:SQLite
索引

了解完了索引,下面我们继续探讨SQLite的事务。

对于事务,就是数据库的一次原子性的执行操作。原子性的执行操作为数据的整体性执行带来的可靠安全性。在SQLite中,如果我们默认事务(会为每个插入和更新都创建一次事务,并且在每次插入和更新后会立刻提交本次操作),即没有手动创建事务,假设此时有1000条数据,那么数据的执行流程是
创建事务 -> 执行插入或更新操作 -> 提交事务,这样的流程会执行1000次。如果我们手动创建了事务,则执行流程为: 创建事务 -> 执行1000条SQL数据操作 -> 提交事务。很明显,我们在SQLite中使用事务可以为插入和更新操作带来很大的优化。下面来看在SQLite中如何使用事务:

从上图我们看到,执行一次事务分为了四步,分别是:开始事务 ->  执行SQL ->设置事务执行成功
->  结束事务

ok,两个主要的模块我们已经介绍完毕,下面来看下对于SQLite的一些其他的优化细节:

1>
少用cursor.getColumnIndex()
:使用cursor.getColumnIndex(),系统会根据列名来获取列所在的下标,比较耗时,所以我们可以使用static定义下标,直接通过下标来获取某列。

2> 使用StringBuilder或StringBuffer来拼接字符串:SQL语句字符串的拼接或创建多个临时变量,此时我们可以使用StringBuilder或StringBuffer来拼接字符串,减少不必要的资源占用,这个不多说,大家都懂的。

3> 查询时,只返回自己需要的值或结果:有些童靴可能为了简单,在查询数据时直接将全部数据获取出来,然后再get到自己想要的某列值。这样的操作同样会带来不必要的系统资源开销和浪费。所以,在查询时,我们只取自己需要的字段和结果。

4>cursor使用后要及时关闭:即在查询完结果后,调用cursor.close()将资源关闭。

关于Android中SQLite数据库的优化,就和大家分享到这里,有不妥的地方还望大神多多提醒。下一篇,我将和大家一起分享在Android优化系列的第二篇:Android性能优化-布局优化

时间: 2024-08-11 23:32:32

Android性能优化-SQLite数据库的相关文章

Android性能优化之数据库优化

本文为性能优化的第一篇——数据库性能优化,原理适用于大部分数据库包括Sqlite.Mysql.Oracle.Sql server,详细介绍了索引(优缺点.分类.场景.规则)和事务,最后介绍了部分单独针对Sqlite的优化. 目前性能优化专题已完成以下部分: 性能优化总纲——性能问题及性能调优方式 性能优化第四篇——移动网络优化 性能优化第三篇——Java(Android)代码优化 性能优化第二篇——布局优化 性能优化第一篇——数据库性能优化 性能优化实例 1.索引 简单的说,索引就像书本的目录,

Android性能优化 一 优化小结

在前几篇的博客中,我从SQLite数据库.布局.数据处理,网络等方面和大家分享了一些优化的知识.本篇博客,我将以小结的方式和大家一起回顾在Android 性能优化方面的一些注意细节. 首先,我们从Android数据库-SQLite来分析了在操作数据库时我们可以优化的地方,我将其分为了两部分,分别是: (1)索引 (2)事务 其实这两部分在任何数据库中都是存在的.索引的建立,帮助我们对于数据查询的速度有了很大的提升,同时因为在更新插入等操作时都需要建立索引,所以建立索引带来的开销也是显而易见的.在

Android性能优化-布局优化

在上一篇博客中,我和大家一起探讨了在Android中对SQLite数据库的操作优化细节.还没有看的点击这里:Android性能优化-SQLite数据库 今天,我们继续Android性能优化系列 - 布局优化.在Android中,UI布局作为展示性的标志,显示的速度直接体现了一个App对于客户直观的影响.一个好的App,在布局和UI上肯定有比较好的性能优化,所以布局优化成为了Android性能优化的有一个重点. Android中关于布局优化,系统为我们提供了几个抽象的标签: (1)include

Android性能优化总结(转)

前言 性能优化本身是一个很大的主题,涵盖程序的方方面面,任何不慎的操作,都有可能对性能造成比较大的影响,要知道程序的性能是可以累加的,多处的性能低下, 会影响整体的性能,其后果可能也是多方面的,本文总结了目前工作中,所需要知道的大部分性能优化点,一部分个人总结,一部分来自于互联网.但整体上,都是 提纲性的,并没有列出具体的实例,因为写这方面主题的达人实在太多了,所以,我得站在巨人的肩膀上,具体细节,请参考对应的链接. 性能低下的现象 游戏:界面很卡,FPS低 搜索性能差 服务器响应速度慢 OS:

Android性能优化方法(六)

ContentProvider优化改进 1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括对单表查询.连表查询.分组查询.排序查询.经常是一到两个数量级的性能提升,且随着数据数量级增长. (2). 缺点索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加.在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响. (3).

【Java/Android性能优化1】Android性能调优

本文参考:http://www.trinea.cn/android/android-performance-demo/ 本文主要分享自己在appstore项目中的性能调优点,包括同步改异步.缓存.Layout优化.数据库优化.算法优化.延迟执行等. 一.性能瓶颈点 整个页面主要由6个Page的ViewPager,每个Page为一个GridView,GridView一屏大概显示4*4的item信息(本文最后有附图).由于网络数据获取较多且随时需要保持页面内app下载进度及状态,所以出现以下性能问题

Android性能优化 一 数据优化

在上一篇博客中,我和大家一起探讨了在Android中对SQLite数据库的操作优化细节.还没有看的点击这里: Android性能优化-布局优化 今天,继续Android性能优化 一 编码细节优化. 编码细节,对于程序的运行效率也是有很多的影响的.今天这篇主题由于技术能力有限,所以也不敢在深层去和大家分享.我将这篇主题分为以下几个小节: (1)缓存 (2)数据 (3)延迟加载和优先加载 1> 缓存 在Android中缓存可以用在很多的地方:对象.IO.网络.DB等等..对象缓存能减少内存分配,IO

Android 性能优化

上周四参加了MDCC大会的 Android,我比较关注的5R,做一个安静的app,图片缓存以及React Native For Android,其中很大一部分的内容都是讲的性能优化,后续还会给大家带来一篇React Native ,下面就来总结一下Android性能优化方面的内容! Reduce Cache/Drawable load in demand bitmap - scale/format Reuse pools inBitmaps convertView onDraw / for Re

Android性能优化之布局优化

由于Android系统对硬件的要求较高,并且上层应用都是用Java(效率要比C++低)编写的,对程序的优化就成了程序员的日常工作了:Android的优化 可以从以下几个地方下手:布局优化.数据库优化.使用异步加载数据.使用缓存技术.算法代码优化.使用线程池 先从比较简单的布局入手 程序目录结构 1.使用 <include>标签复用相同部分的布局文件,就是在一個而已文件中包含另一个布局 activity_main.xml <RelativeLayout xmlns:android=&quo