如何在 SQL Server 数据库中存储图像

本文关键字:存储 图像 数据库 Server SQL | 更新日期: 2023-09-27 18:33:26

目前,我正在制作一个WPF + C#应用程序。我应该将图像存储在服务器上,但我不知道我应该将图像存储为二进制还是 base64。

以上哪种方法最好?

我使用SQL Server进行存储数据库!

谢谢!

如何在 SQL Server 数据库中存储图像

Microsoft Research有一篇非常好的论文,叫做To Blob or Not To Blob。

经过大量的性能测试和分析,他们得出的结论是这样的:

  • 如果图片或文档的大小通常低于 256K,则将它们存储在数据库VARBINARY列中效率更高

  • 如果您的图片或文档的大小通常超过 1 MB,则将它们存储在文件系统中会更有效(并且使用 SQL Server 2008 的 FILESTREAM 属性,它们仍处于事务控制之下,并且是数据库的一部分(

  • 在这两者之间,根据您的使用情况,这有点折腾

如果您决定将图片放入SQL Server表中,我强烈建议使用单独的表来存储这些图片 - 不要将图像存储在"常规"表中 - 将它们保存在单独的表中。这样,常规表可以保持精简、平均和非常高效,假设您并不总是需要选择图像作为查询的一部分。

但是,如果您选择将图像存储在 SQL Server 数据库中,请务必将它们直接存储为二进制值 - 不要对它们进行 Base64 编码!这太疯狂了,会大大增加你的图像大小,没有真正的好处。

与其存储图像的字节,不如将文件保存在特定文件夹中,并将路径保存在数据库中