我在三星Galaxy GT-I9000设备的安卓应用程序中遇到了SQLite数据库的性能问题。数据库包含10个表,每个表有3-8列。
一旦数据库文件增加了大约400KB,update/instert查询需要更多的时间来执行-2秒!与其他设备(HTC Magic,HTC Desire)相比,更新/插入查询大约需要40毫秒!
数据库文件位于应用程序数据目录中。将数据库文件移动到SD卡可以显著提高速度。
定期的ANALYZE和VACUUM命令不会影响速度。以及PRAGMA cache_size命令。
你有什么想法可以提高性能吗?
任何想法都是受欢迎的,除了在SD卡中保持数据库或将数据库分成许多文件,每个文件包含一个表。
发布于 2010-08-18 03:35:26
使用事务和参数化查询。如果不使用参数化查询,Sqlite必须解析每条sql语句。所有这些不必要的解析使简单的insert语句慢2到3倍。查看此处:How do I get around the "'" problem in sqlite and c#?
使用事务也是非常重要的,因为Sqlite可以非常快地执行插入,但它的提交速度很慢,因此您必须将插入/更新和删除捆绑到一个大事务中。
发布于 2010-08-18 22:22:35
在三星Galaxy S上,访问内部SD卡的速度非常慢。有多种可用的inofficial lag fixes,似乎是三星的RFS文件系统导致了延迟。
希望三星将发布一个更新来解决这个问题,在此之前,如果可能的话,你最好的办法是避免I/O。
发布于 2010-08-17 18:54:13
Bulk insert命令应在事务内执行:
BEGIN TRANSACTION;
// INSERTS
COMMIT;https://stackoverflow.com/questions/3501451
复制相似问题