我正在为我的sqlite数据库使用FMDB包装器,并且在数据库中我存储从url下载的图像,并存储在BLOB数据中,但是当我在数据库中进行SELECT查询时如下:
SELECT id,img FROM table1 WHERE name = "Carl"
这是数据库中的列:
img BLOB
但查询速度非常慢,如果我从查询中删除img,它会非常快,在我从网址下载图像后我调整了它以使其更小,从而以这种方式节省内存空间:
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;
}
任何人都知道如何让查询更快?我需要在查询中还有图像。
感谢
答案 0 :(得分:1)
如此处所述:http://www.sqlite.org/intern-v-extern-blob.html,它可以改进 如果大型BLOB(如图像数据)存储在外部,并且只有文件路径记录在数据库中,则表示SQLite性能。
如果将图像存储在“Documents”目录中,则将它们备份到iCloud(如果
用户已激活该功能)。如果不需要iCloud备份(例如因为可以随时从服务器重新加载图像),那么“库/缓存”(使用NSCachesDirectory
)将是一个更好的位置。