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. HDU 6156 Palindrome Function(数位DP)题解

    思路: 数位dp的操作是dfs+记忆化,我们dp开四维:位置,长度,进制,是否回文.然后每次暴搜记录下每个位置的数字是什么,搜到对称轴另一边需要检查是否符合回文. 终于把友谊赛的题目都补完了...没做 ...

  2. package 'orocos-bfl' not found

    -- ==> add_subdirectory(bp_fusion) -- checking for module 'orocos-bfl' -- package 'orocos-bfl' no ...

  3. m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置

    m_Orchestrate learning system---二十九.什么情况下用数据库做配置字段,什么情况下用配置文件做配置 一.总结 一句话总结: 配置文件 开发人员 重置 数据库 非开发人员 ...

  4. Android中Tablayout设置下划线宽度 和 dp和px之间进行相互转换

    开发中遇到了一个问题,Tablayout设置下换线长度,看了点资料,分享给大家. 效果图:               直接贴代码(要在tabLayout添加完所有的tab后调用) public vo ...

  5. java读取和写入浏览器Cookies

    首先我们认识下什么是cookies: cookie实际上是一个存在你硬盘里的数据,但是这些数据很特殊,只能由web应用提交给浏览器帮助存储,并且我们还能读取浏览器存在本地的cookie web应用一般 ...

  6. CentOS7 Could not retrieve mirrorlist http://mirrorlist.centos.org/?...

    在执行命令 sudo yum clean expire-cache 清理完过期的缓存后,再执行yum install 或 update命令都失败了.原因是清理过期缓存结果不该被清理的也删掉了,可能是y ...

  7. 穷举算法和递推算法(Java)

    穷举算法 概念: 最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况.穷举算法效率不高,但是适合一些没有明显规律可循的场合. 思想: 在使用穷举算法时,需要明确问题答案的范围,这样才可能在指定范 ...

  8. fiddler手机端抓包配置

    首先,你得安装fiddler,这是前提条件,手机抓包有必须条件: 需要保持电脑和手机在同一个局域网中 (这一点,我一般会在电脑上启动一个wifi,然后手机连接即可) 下面说一下如何配置: 手机连接电脑 ...

  9. C++ 4 种具有更 为准确语义的新强制转换类型

    1. static_cast<T>() 可用于把指向A 的指针强制转换为指向B 的指针,其约束条件是类B必须是类A的子类.例如:A *obj = new B;B *b = static_c ...

  10. 深度学习 循环神经网络 LSTM 示例

    最近在网上找到了一个使用LSTM 网络解决  世界银行中各国 GDP预测的一个问题,感觉比较实用,毕竟这是找到的唯一一个可以正确运行的程序. #encoding:UTF-8 import pandas ...