1、数据库性能上

1.1 批量事务插入,提升数据插入的性能

由于sqlite默认每次插入都是事务,需要对文件进行读写,那么减少事务次数就能简书磁盘读写次数从而获得性能提升。

1.2 单条sql优于多条sql

实测发现,对于几十条sql插入当你替换成单条sql时性能有所提升,但是这里要注意的是,换成单条可读性较差,同时会出现sql超长的错误。

1.3 读和写操作是互斥的,写操作过程中可以休眠让读操作进行

由于第一步所说的多数据事务插入,从而会导致插入时间增长那么也会影响数据展示的速度,所以可以在插入过程中休眠操作,以便给读操作流出时间展示数据。

1.4 使用索引

适当的索引的好处是让读取变快,当然带来的影响就是数据插入修改的时间增加,因为还得维护索引的变化。不过对于大部分的读操作多于写操作的数据库来说索引还是十分有必要的。关于如何设计索引,可以参考下面这个文章:

索引优化

1.5 使用联合索引

过多的索引同时也会减慢读取的速度,很典型的一个情况就是比如要同时根据省市区县查询,又可以根据年月日查询,如果每个都做索引那么读取速度将会显著降低。

对于这种有层级关系的关键字,就可以考虑联合索引了,比如首先根据省查询,然后根据省市查询,层层递进到省市区县的查询方式,就可以使用联合索引,效果非常好。

1.6 勿使用过多索引

1.7 增加查询条件

当你只要一条数据时增加limit 1,这样搜索到了后面的就不会再查询了,大大的加快了速度

1.8 提前将字段的index映射好

减少getColumnIndex的时间,可以缩短一半的时间

2、数据库设计上

2.1 通过冗余换取查询速度

2.2 减少数据来提升查询速度

比如下拉操作时,先清除旧数据,再插入新数据保证数据库中的数据总量小,提升查询速度。

2.3 避免大数据多表的联合查询

和2.1的方式其实是一样的原理,只是这里需要特别拿出来说明以下,比如有文件表,还有多媒体文件表,你可以设计成一张文件表,一张多媒体关联表存放多媒体数据,文件信息还是在文件表中,然后通过外键关联。

但是如果两个表数据很多,主键还不一致同时数据从服务器下来的数序也不一致那么,两个表的联合查询出来的数据要慢的多,这个时候就可以用冗余来唤起查询速度了。

 
参考文献:http://www.jianshu.com/p/3b4452fc1bbd

sqlite性能优化的更多相关文章

  1. Android 中 SQLite 性能优化

    数据库是应用开发中常用的技术,在Android应用中也不例外.Android默认使用了SQLite数据库,在应用程序开发中,我们使用最多的无外乎增删改查.纵使操作简单,也有可能出现查找数据缓慢,插入数 ...

  2. sqlite批量处理数据性能优化

    最近设计到sqlite数据库批量操作的,性能很是问题.于是一番研究(站在巨人肩膀)从网上整理出来相关性能优化方向.大体分三个级别,一般第一个阶段已足够. 1.sqlite每次插入数据(每调用一次sql ...

  3. ListView显示Sqlite的数据美化版与性能优化

    在上一篇文章中,我们已经实现在listview显示数据库内容的.但是我们listview中,排版不是很好看,所以这篇文章呢,我们来对listveiw进行美化.哈哈,说白了,就是对listview添加一 ...

  4. (转) Android开发性能优化简介

    作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...

  5. fir.im Weekly - 如何进行 Android App 性能优化

    关于 Android App 的优化,@anly-jun 用 3 个月完成了这一系列文章,从 性能分析工具 到 ANR .Layout .消除卡顿 到 内存优化.内存分析工具大概十五六篇,并对此做一个 ...

  6. 【腾讯Bugly干货分享】微信读书iOS性能优化

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578c93ca9644bd524bfcabe8 “8小时内拼工作,8小时外拼成长 ...

  7. H5 缓存机制浅析 移动端 Web 加载性能优化

    腾讯Bugly特约作者:贺辉超 1 H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性.离线存储(也可称为缓存机制)是其中一个非常重要的特性.H5 引入的离线存储, ...

  8. [素材资源] Android开发性能优化简介(非常不错的)

    转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...

  9. [JAVA] java程序性能优化

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

随机推荐

  1. artTemplate 模板使用

    下载github中文件,浏览器引用lib/template-web.js 模板html: {{each ProductInfoList as prd}} <div class="res ...

  2. 枚举子集&高位前缀和

    最近做的题里面有这个东西,于是写一篇博客总结一下吧. 枚举子集 枚举子集就是状压的时候枚举其中的二进制位中的1的子集.直接暴力枚举二进制位时间复杂度是\(O(4^n)\),但是我们可以发现,对于每一位 ...

  3. HTML和CSS美化 登入框的页面

    <div id="leftbody"> <p class="p0">如果您感觉您的网站够炫美可以提交给我们!</p> < ...

  4. django 常用字段类型

    <> CharField #字符串字段, 用于较短的字符串. #CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数 ...

  5. hdu 4845 状压bfs(分层思想)

    拯救大兵瑞恩 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Subm ...

  6. Leetcode 39

    //经典回溯法class Solution { public: vector<vector<int>> combinationSum(vector<int>& ...

  7. 使用POI设置导出的EXCEL锁定指定的单元格

    注:要锁定单元格需先为此表单设置保护密码,设置之后此表单默认为所有单元格锁定,可使用setLocked(false)为指定单元格设置不锁定. sheet.protectSheet("&quo ...

  8. 高级浏览器-SRWare Iron 29.0.1600.0 版本发布

    SRWare Iron是德国一安全公司srware改造的Chrome(铬)命名为铁(iron)的浏览器.于2008年9月18日首次发布. 据官方介绍,Iron浏览器砍掉了Chromium原程序中的很多 ...

  9. Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 05

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2287] 版本控制:https://git.coding.net/liuyy08 ...

  10. 实现react中的自动保存--定时任务

    1. 定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或 ...