我正在为我的 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/