前言
我们在做Android开发时常会用到Sqlite数据库做为本地的缓存库,针对Sqlite数据库的性能优化网上也有不少的文章。
性能优化的几个要点
本来想拿这个做为这篇的重点,结果发现Android本身的SQLiteDatabase.java里面已经把插入的方法用SQLiteStatement写过了,所以我们这里不再着重讲了。
关于cursor.getColumnIndex的测试
今天我们就专门来测试一下getColumnIndex的速度问题
查询一条数据
上图为自己的程序里面原先的查询一条信息的数据,调用到经过测试,输出的时间为43毫秒
然后我们新写了一个方法,把显示列前面定义出来,然后直接取列的序号
再用新的方法调用了一下,看到结果,我测了两次,分别是42和43,也就是说基本没有什么变化。
查询多条数据(2W6左右)
这次我们再找出来另一个获取所有资料的方法,本地Sqlite数据库里有2W6的数据量,我们先看一下用了getcolumnindex的代码
然后我们执行一下看到用时为11366
接下来我们再写一个去掉getcolumnindex的方法
执行这个后的用时为11168,比原来的能节省了一些,还是有些帮助的。
结论
当我们在查询一条语句的时候,用getcolumnindex获取到对应列和直接取列的序号几乎没有影响。当我们查询很多数据的时候,会有一些变化,但是可能影响的也不算太大,不过有节省就算了一个优化了,还是建议我们在写的时候尽量少用到cursor.getcolumnindex方法。
-END-