前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Sqlite里数据查询性能优化对比

Android Sqlite里数据查询性能优化对比

作者头像
Vaccae
发布2019-07-25 11:04:10
2.4K0
发布2019-07-25 11:04:10
举报
文章被收录于专栏:微卡智享微卡智享

前言

我们在做Android开发时常会用到Sqlite数据库做为本地的缓存库,针对Sqlite数据库的性能优化网上也有不少的文章。

性能优化的几个要点


(1)编译SQL语句(重复的插入操作使用SQLiteStatement)

本来想拿这个做为这篇的重点,结果发现Android本身的SQLiteDatabase.java里面已经把插入的方法用SQLiteStatement写过了,所以我们这里不再着重讲了。

(2)显示使用事务(做数据库更新修改操作时用事物能够提高大概8位的速度)
(3)建立索引(这个我觉得没必要说了,所有数据库查询时索引都会有帮助)
(4)查询数据优化(少用cursor.getColumnIndex,这个是今天我们这篇说的测试)
(5)ContentValues的容量调整(ContentValues的初始容量是8,如果当添加的数据超过8之前,则会进行双倍扩容操作,因此建议对ContentValues填入的内容进行估量)
(6)及时关闭Cursor(这个没什么可说的,写代码的时候应该养成习惯)
(7)耗时异步化(大数据量操作时最好用异步处理)

关于cursor.getColumnIndex的测试

今天我们就专门来测试一下getColumnIndex的速度问题

查询一条数据

上图为自己的程序里面原先的查询一条信息的数据,调用到经过测试,输出的时间为43毫秒

然后我们新写了一个方法,把显示列前面定义出来,然后直接取列的序号

再用新的方法调用了一下,看到结果,我测了两次,分别是42和43,也就是说基本没有什么变化。


查询多条数据(2W6左右)

这次我们再找出来另一个获取所有资料的方法,本地Sqlite数据库里有2W6的数据量,我们先看一下用了getcolumnindex的代码

然后我们执行一下看到用时为11366

接下来我们再写一个去掉getcolumnindex的方法

执行这个后的用时为11168,比原来的能节省了一些,还是有些帮助的。


结论

当我们在查询一条语句的时候,用getcolumnindex获取到对应列和直接取列的序号几乎没有影响。当我们查询很多数据的时候,会有一些变化,但是可能影响的也不算太大,不过有节省就算了一个优化了,还是建议我们在写的时候尽量少用到cursor.getcolumnindex方法。


-END-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1)编译SQL语句(重复的插入操作使用SQLiteStatement)
  • (2)显示使用事务(做数据库更新修改操作时用事物能够提高大概8位的速度)
  • (3)建立索引(这个我觉得没必要说了,所有数据库查询时索引都会有帮助)
  • (4)查询数据优化(少用cursor.getColumnIndex,这个是今天我们这篇说的测试)
  • (5)ContentValues的容量调整(ContentValues的初始容量是8,如果当添加的数据超过8之前,则会进行双倍扩容操作,因此建议对ContentValues填入的内容进行估量)
  • (6)及时关闭Cursor(这个没什么可说的,写代码的时候应该养成习惯)
  • (7)耗时异步化(大数据量操作时最好用异步处理)
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档