自从我将数据从ArrayList移到Android上的sqlite数据库后,我的性能下降严重。没有可能导致这种情况的游标被打开,所以我怀疑问题在于我存储在BLOB字段中的图像。Android sqlite/BLOB性能问题
应用程序创建卡有一个字段cardBitmap是被用在创建位图填充。
任何人都可以从他们的经验告诉我,有什么解决方案更高性能:
- cardBitmap持有引用(路径)SD卡上的文件将在创建绘制。只有路径存储在数据库中。
- cardBitmap保持物体(BitmapFactory.decodeStream(的ImageStream,NULL,NULL)),其中的ImageStream被读作一个ByteArrayInputStream的从相应的数据库字段。
任何建议将有所帮助。谢谢!
+1同意,SQLite针对简单类型存储和关系进行了优化,而非BLOB存储。 FileSystem更好地存储它。我目前正在将所有“内存中”数据模型移动到使用SQLite的直接访问过程中,并且我完全没有性能下降(仅使用简单的整数和文本字段),我感到非常惊讶。绝对要走的路。 – Guillaume
自答案被接受以来事情似乎发生了变化:有报告称SQLite blob可能比使用文件系统更快,这取决于几个因素,但最重要的是每个二进制数据的大小。例如,请参阅https://www.sqlite.org/fasterthanfs.html。 – Chuim