Android开发中的SQLite优化

关于SQLite的优化,首先是能用SQL语句批次处理的,就不要单笔操作,Cursor就更是能不用就不用。比如成批的DELETE/UPDATE,将条件组装到SQL语句,会比使用CURSOR一条条的查再删效率要高很多(若干年前就曾使用存储过程代替单笔操作,将一次批量计算时间从一天缩到了数分钟以内,参考)。其次是对操作的优化:对于INSERT/UPDATE操作较多时使用事务,如果SELECT操作较多时,使用索引。


结合现在的工作,发现针对操作的优化,下面这篇文章可以翻译出来归档。以下为正文:


SQLite有一个简洁的SQL接口,且以低内存占用著称。现如今,SQLite已经在AndroidiOS开发中得到广泛的应用。本文主要讨论在Android应用如何优化SQLite的性能和资源占用。 


1, 使用事务(Transaction)

在默认情况下每一个SQL语句都被包一个全新的事务内,比如执行一个如INSERT这样基本的数据库操作,就会放到一个新创建的事务中执行。一次只需要操作一次数据库操作时,让SQLite自己来进行事务管理当然是明智的。但如果一次有大量的操作要做时,比如循环调用INSERT添加时,这样就显得开销过大了,因为每一笔操作都要重新打开、写入,最后再关闭journal文件, 这个文件是临时用来保存数据操作的中间结果,详细内容看这里(参考)。 


如果明确地在一系列SQL语句前后以BEGIN TRANSACTIONEND TRANSACTION这样显示地使用事务就可以避免上面的情况。对于那些不会改变数据的操作,这样的方式也同样可以提速(好似数据库操作中单笔的操作效率将远低于批次操作,如果用SQL语句可以搞定的事,就不可使用Cursor进行操作)。


注明:除了发起事务外,你必须还要负责对事务的提交和回滚操作。


在Android应用开发中可以使用类似如下的方式使用BEGIN TRANSACTIONEND TRANSACTION:


db.beginTransaction();
try{
  for(int i =0; i< LENGTH ; i++,sequenceNum++)
  {
  // execute SQL
  }
  db.setTransactionSuccessful();// marks a commit
}
finally{
  db.endTransaction();
}



2. 使用索引

如果没有在数据库使用索引,当你在一个没有排序的数据表中使用映射查询(projection query)搜索时,无可避免的要执行一个全序列查找。这种情况通常并不是什么问题,每种数据库,包括SQLite都会为数据集执行索引来降低查找时间。


索引维护着一个表中某一列或某几列的顺序,这样就可以快速定位到一组值,而不用扫遍全表。所有的索引信息会被保存在一个独立的索引表中,所以会产生额外的空间占用,不过绝对物超所值,特别是当你会在数据库中进行大量的读及搜索操作时。


SQLite会自动为每一个UNIQUE栏位创建索引,包括主键(Primary Key)栏位,另外也可以通过CREATE INDEX进行显示地创建。


注:如果你的查询太复杂而无法使用所创建的索引,那你就要好好想想你数据库的结构了。



3. 在Where分支中使用限定符

如果以字串拼接出SQL语句的Where,莫不如使用SQLite的query操作带上'?'来编译查询。以下是它的好处:

 a. 有利于SQLite缓存这些查询及索引。

 b. 可以避免达到SQLite缓存的上限。使用字串拼接Where的查询,每一个都被视为不同的查询,这就容易达到缓存的上限。

 c. 可以避免非法的SQL注入。


转载请注明出处: http://blog.csdn.net/horkychen


参考:

1. SQLite查询优化性能要点

2. Android SQLiteDatabase

3.   Android SQLite性能分析


  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Android SQLiteStudio是一个Android平台上的数据库管理工具,主要用于管理和操作SQLite数据库。 首先,SQLite一个轻型的数据库引擎,它被广泛应用于Android平台上的应用程序开发。而SQLiteStudio则是一个用于管理SQLite数据库的可视化工具。通过SQLiteStudio,开发者可以方便地创建、修改和维护数据库表结构以及数据记录。 在Android应用开发过程,使用SQLiteStudio可以帮助开发者更好地管理应用程序的数据库。例如,开发者可以通过SQLiteStudio创建数据库表,定义表的字段以及字段的数据类型。创建完毕后,开发者可以使用SQLiteStudio插入、更新和删除数据记录,还可以执行查询操作以检索数据数据。 另外,SQLiteStudio也提供了一些高级功能,如索引、触发器和视图的管理。通过这些功能,开发者可以优化数据库的性能和查询效率,提高应用程序的响应速度和用户体验。 总之,Android SQLiteStudio是Android平台上的一款实用工具,它可以帮助开发者更好地管理和操作SQLite数据库。通过SQLiteStudio,开发者可以轻松创建、修改和维护数据库表结构以及数据记录,同时还可以使用高级功能优化数据库性能。 ### 回答2: Android SQLiteStudio是一个用于管理和操作SQLite数据库的开源软件。它提供了一个直观的图形用户界面(GUI),使用户能够轻松地创建、编辑和删除数据库、表格和数据。 使用Android SQLiteStudio,您可以执行各种数据库操作,如创建新数据库、导入和导出数据、编辑表格和数据行等。该软件提供了一个简单而强大的用户界面,使您能够轻松地进行这些操作,而无需编写复杂的SQL语句。 此外,Android SQLiteStudio还具有数据查看和过滤功能,以帮助用户更好地理解和分析数据数据。您可以轻松地浏览和搜索数据数据,并使用过滤器来查找特定的数据行。 Android SQLiteStudio还提供了一个强大的查询编辑器,让用户可以编写和执行复杂的SQL查询。您可以自定义查询的条件、排序和列,并立即看到结果。该软件还提供了一些常用的查询功能,如联接、聚合和分组。 总的来说,Android SQLiteStudio是一个简单而强大的工具,用于管理和操作SQLite数据库。它提供了一个直观的用户界面,使用户能够轻松地进行各种数据库操作,如创建、编辑和删除数据库、表格和数据。它还具有数据查看和查询编辑器的功能,使用户能够更好地理解和分析数据数据。 ### 回答3: Android SQLitestudio是一个功能强大的数据库管理工具,用于管理和操作SQLite数据库。它可以在Android设备上直接运行,提供了简单直观的界面和多种功能,使得开发者可以更轻松地管理和查询数据库。 首先,SQLitestudio提供了一个直观的图形界面,使得用户可以通过简单的点击和拖动操作来管理数据库。用户可以轻松地创建、编辑和删除表格、字段和索引,而不需要编写复杂的SQL语句。此外,SQLitestudio还提供了丰富的模板和向导,帮助用户快速创建数据库结构。 其次,SQLitestudio具有强大的查询功能,允许用户轻松执行各种复杂的SQL查询。用户可以使用SQL编辑器编写和调试SQL语句,然后通过查询结果窗口查看查询结果。此外,SQLitestudio还提供了查询构建器,帮助用户快速构建常见的查询语句,减少了错误和繁琐的工作。 此外,SQLitestudio还提供了数据导入和导出功能,用户可以将数据从其他数据库导入到SQLite数据,或者将SQLite数据库导出到其他格式(如CSV、JSON等)。这种灵活性和互操作性使得开发者可以更好地与其他数据库和数据源进行集成。 最后,SQLitestudio还支持批量操作和数据编辑。用户可以一次性插入、更新或删除多行数据,而不需要手动编写和执行多个SQL语句。此外,SQLitestudio还提供了直接编辑数据的功能,用户可以直接在表格编辑和更新数据,而不需要编写和执行SQL语句。 综上所述,Android SQLitestudio是一个强大的数据库管理工具,提供了直观的界面、丰富的功能和强大的查询能力。它方便了开发者管理和操作SQLite数据库,在Android开发起到了重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值