我一直在研究我们设备的一些性能问题,发现我们有相当多的应用程序都在进行数据库读写操作。
我首先使用联系人API插入新联系人和数据行,但速度非常慢。插入大约1500行(250个原始联系人和1250个数据行)需要1分18秒。
我曾在另一个应用程序中使用过插入帮助程序来实现高效的插入,于是决定编写一个测试应用程序,用不同的插入方法写入到不同的数据库中。
每个数据库都有一个表,每个表都有4列: _ID、Name、Time和Blob(全部为“string”类型),就像联系人提供程序定义的数据列一样。
_ID是自动递增的主键,Name只插入相同的内容“1234567890”,时间只是当前系统时间的毫秒表示,而BLob则是一个长度为6400的字符串,其中包含字母“A”...
我首先检查了批量插入,但它只是循环遍历您定义的所有插入,并且与单独插入(或可忽略的性能影响)一样慢。
我测试了3种不同的插入方法: ContentValues使用db.insert方法: SQLiteStatement使用statement.execute()(在事务内完成)。 SqliteInsertHelper使用事务。
我可以提供一些代码,但我从InsertHelper中获得了最佳性能,并想知道为什么它已被弃用:
插入100条记录所需的时间 ContentValues:7.778秒(每毫秒写入82字节) SQLiteStatement:1.311秒(每毫秒写入489字节) SqliteInsertHElper:0.292秒(每毫秒写入2197字节)
有什么想法吗?