有很多次我想将图像保存到SQL Server。我已经阅读了一些保存图像的做法:
1)上传并保存图像到服务器,保存表内的路径
2)将图像保存为二进制文件
3)将图像保存为base64字符串
4)使用BLOB(我还没有研究它是如何工作的)
当您从服务器请求图像时,您知道哪种“方式”更快吗? 你知道哪种“方式”更好,以免使SQL服务器变慢吗? 你知道其他任何“方法”哪个更好吗?
谢谢!
答案 0 :(得分:4)
Microsoft已就此主题做了some research,并得出结论,这取决于图片的大小。如果您的大多数图像都是< 256Kb,你应该使用VARBINARY。另一方面,如果它们高于1Mb,则应使用FILESTREAM(通常存储在数据库文件外的文件系统中)。
如果您的图像链接到其他数据,将记录本身与图像分离到不同的表(即创建图像表)通常很有用,这样带有数据的表格仍然很小且易于操作。
答案 1 :(得分:3)
请注意,普遍没有“最佳”方式,但只有最符合您特定需求的方式。
“当您从服务器请求图像时,您知道哪种”方式“更快吗?” - 在本例中为#1,因为您实际上将图像存储在文件系统中,并且只从数据库中检索图像路径。
“你知道哪种”方式“更好,以免使SQL服务器变慢?” - 再次#1,因为它必须处理更少的数据。 SQL Server更容易检索表示存储图像的路径的varchar,而不是以任何形式检索图像本身。
No.1是最简单的,可能最容易设置,但请注意有缺点: