我试图在android中优化sqlite的插入速度。我尝试了很多方法。比如设置pragma设置,日志模式等等。
除此之外,我还尝试了单独的插入,预备声明和批量插入。请记住,所有这些都已包含在交易中。
我的智能手机(三星Galaxy SIII)的插入速度最高可达20列每秒约250行。根据Sqlite faq,sqlite每秒可以轻松插入50,000个插入。因此,我非常乐观地认为插入至少有数千而不是数百。但是,上述提到的都不起作用。或者已经优化了250行插入?
请帮帮我。感谢。
此致 德克斯特
答案 0 :(得分:1)
我在大公司规模的数据库上使用的一种方法是提高批量插入速度,这是在进行批量插入时关闭索引。缺点是您需要拥有对数据库的独占访问权限,并且必须在完成后重新开启索引。
在移动应用中,您可以通过点击“正在更新应用”屏幕轻松获得对数据库的独占访问权。
SQLITE可以在执行批量插入之前删除任何非唯一索引。如果您的20列表有20个非唯一索引(每列一个)。删除20个索引。执行批量插入。创建先前删除的20个索引。
还要确保您的代码是紧凑的,并且在循环之前可以在插入循环内做任何事情。例如,在插入循环之前查找列索引。
如果这不适用于您的应用,只需将其作为您将来可能需要在后端数据库上执行的操作。
答案 1 :(得分:-2)
您可以使用对象/关系映射(ORM)工具来获得更好的性能。 ORMLite,GreenDao等。
Greendao更好,看看
功能: -
ORM工具的好处: -