4

There are many times that I wanted to save an image to an SQL Server. I have read some practices for saving images :

1) upload and save image to server, save the path inside the table

2) save image as binary

3) save image as base64 string

4) using BLOB(i haven't researched how it works)

Do you know which "way" is faster when you request from server an image? Do you know which "way" is better so as not to make SQL server slower? Do you know any other "way" which is better from the above?

Thanks!

4

2 回答 2

4

Microsoft 对此主题进行了一些研究,并得出结论,这取决于您的图像大小。如果您的大多数图像小于 256Kb,您可能应该使用 VARBINARY。另一方面,如果它们超过 1Mb,那么您应该使用 FILESTREAM(通常存储在数据库文件之外的文件系统上)。

如果您的图像链接到其他数据,则将记录本身与图像分离到不同的表中(即创建一个图像表)通常很有用,这样包含数据的表就可以保持小且易于操作。

于 2013-06-19T19:50:28.457 回答
3

请注意,没有普遍的“最佳”方式,只有最适合您特定需求的方式。

“当您从服务器请求图像时,您知道哪种“方式”更快吗?” - 在这种情况下#1,因为您实际上将图像存储在文件系统中,并且仅从数据库中检索图像路径。

“您知道哪种“方式”更好,以免使 SQL Server 变慢吗?” – 再次 #1,因为它必须处理更少的数据。SQL Server 检索表示图像存储路径的 varchar 比检索任何形式的图像本身更容易。

No.1 是最简单的,也可能是最容易设置的,但请注意有以下缺点:

  • 如果从文件系统中删除了某些图像 SQL Server 不知道发生了这种情况
  • 当您从 SQL Server 中删除行时,您还需要从文件系统中删除图像(如果您想保持清晰;))
  • 您还需要从文件系统备份数据,而不仅仅是 SQL Server 数据库
于 2013-06-20T09:45:59.523 回答