SQLite是一个开源的嵌入式关系数据库,由D. Richard Hipp于2000年发布,它能减少应用程序管理数据的开销,可移植性好,很容易使用,高效而且可靠。本文是关于SQLite的优化方法,是比较重要的内容。
SQLite的数据库本质是文件读写操作,频繁操作打开和关闭是很耗时和浪费资源的,有必要进行相关优化。
优化方法事务机制:
这里要注意一点:事务的开启是要锁定DB的,其他对DB的写入操作都是无法成功的。
- db.beginTransaction(); //手动设置开始事务
- try {
- //这里写你数据操作
- db.setTransactionSuccessful();
- //设置事务处理成功,不设置会自动回滚不提交
- } catch (Exception e) {
- } finaly {
- db.endTransaction(); //提交
- }
项目中不会把项目上万条数据存SQL里的,尽管android有SQLite。
那样处理起来非常慢,而且程序经常出现ANR。
打个比方:有200个城市,每个城市500条城市信息,你怎么创建表?
A:我创建一张表存10000条数据。
B:200张表,每张存500条数据。
C:我创建两张表:
一张存city,其实这张表只有1条数据。
Id(编号),
Version(这200个城市更新版本用)
CityDate(200个城市xml格式字符串数据)。
另一张表存城市信息表:200条数据,每个城市一条数据。
id(CityDate解析出城市对象对应的id)
Version(这500条城市信息更新版本用)
CityMessage(500条城市信息xml格式字符串数据)。
首先你给用户展示200城市(你只取了一条数据 200个城市xml格式字符串数据进行解析)
用户点击一个城市你显示500条记录(通过城市解析ID,取出城市信息表中对应500数据xml格式字符串数据进行解析)
这样做的好处:
(1)统一数据接口,无论你从网络上直接去数据,还是读本地缓存统一数据接口,xml
(2)数据进行排序,内存操作要快一些;
(3)其实这和自己写文件没什么区别,为什么还要用数据库那,这么做有利于程序版本更新升级数据维护!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。