0

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

有谁知道我怎样才能使查询更快?我需要在查询中也有图像。

谢谢

4

1 回答 1

1

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

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

于 2013-08-02T20:58:36.400 回答