一、数据库介绍
SQLite 3 比较常见不予赘述。
Realm 是由Y Combinator孵化的创业团队开源出来的一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。目前最新版是Realm 2.0.2,支持的平台包括Java,Objective-C,Swift,React Native,Xamarin。
优势:兼顾iOS和Android两个平台;简单易用,学习成本低;提供了一个轻量级的数据库查看工具,开发者可以查看数据库当中的内容,执行简单的插入和删除数据的操作。
Realm支持事务,满足ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
WCDB 是微信推出的一个高效、完整、易用的移动数据库框架,基于SQLCipher(an SQLite extension that provides 256 bit AES encryption of database files.),支持iOS, macOS和Android。易用,支持事务,可加密、损坏修复。
二、测试数据表结构
Student表。
字段:ID、name、age、money。
ID | Name | Age | Money |
主键 | 姓名 | 年龄 | 存款(建索引) |
其中age为0~100随机数字,money为每一万条数据中,0~10000各个数字只出现一次。
三、测试数据
对于以下测试数据,只是给出一次测试后的具体数值供参考,经过反复测试后的,基本都在这个时间量级上。
这里测试用的是纯SQLite,没有用FMDB。
- SQLite3:
9万条数据基础上连续单条插入一万条数据耗时:1462ms。
已经建立索引,需要注意的是,如果是检索有大量重复数据的字段,不适合建立索引,反而会导致检索速度变慢,因为扫描索引节点的速度比全表扫描要慢。比如当我对age这个经常重复的数据建立索引再对其检索后,反而比不建立索引查询要慢一倍多。