ios - 在 iOS 中使用 FMDB 在 sqlite 中查询 BLOB 数据太慢

标签 ios objective-c sqlite blob fmdb

我正在为我的 sqlite 数据库使用 FMDB 包装器,在数据库中我存储从 url 下载的图像,并存储在 BLOB 数据中,但是当我在数据库中进行如下所示的 SELECT 查询时:

SELECT id,img FROM table1 WHERE name = "Carl"

这是数据库中的列:

img BLOB

但是查询非常慢,如果我从查询中删除img,它会非常快,在我从url下载图像后,我调整了它的大小以使其更小,从而以这种方式节省内存空间:

NSData *biggerImg = [NSData dataWithContentsOfURL:[NSURL URLWithString:url_image]];

NSData *img = UIImageJPEGRepresentation([self imageWithImage:[UIImage biggerImg] scaledToSize:CGSizeMake(90, 134)], 1.0);


- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}

有人知道如何使查询更快吗?我需要在查询中也有图像。

谢谢

最佳答案

如此处记录:http://www.sqlite.org/intern-v-extern-blob.html ,它可以改善 如果大型 BLOB(例如图像数据)存储在外部,并且数据库中仅记录文件的路径,则 SQLite 的性能。

如果您将图像存储在“文档”目录中,那么它们会备份到 iCloud(如果 用户已激活该功能)。如果不需要 iCloud 备份(例如,因为可以随时从服务器重新加载图像),那么“Library/Caches”(使用 NSCachesDirectory)将是更好的位置。

关于ios - 在 iOS 中使用 FMDB 在 sqlite 中查询 BLOB 数据太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18025551/

相关文章:

ios - JSONModel 和 OData

ios - 如何在 swift 中使用 BLOB 将字节数组 [UInt8] 存储和检索到 sqlite3 数据库中?

objective-c - 具有 24 小时时间的 NSDateFormatter

iOS 推送通知应用程序不要求注册许可

objective-c - ObjC 方法声明之前的 + 和 - 符号有正式名称吗?

Java Android SQLite 字符串不等于它应该是什么

c - 为什么 sqlite3_next_stmt() 不迭代所有语句?

iphone - 选择不支持iOS设备

ios - 推送问题 UINavigationController

Python 内存错误 : The processed data set does not fit into 32-bit process address space