从SQL Server一次或单独检索所有图像

时间:2015-10-01 21:28:17

标签: c# asp.net sql-server database

我有许多图像在数据库中以VARBINARY(MAX)(使用FileStream)存储。我希望一次检索大约10张图像。

使用ASP.net的规定的,最常见的方式是使用HTTP处理程序并为每个单独的图像命中数据库。看起来很好,但有时候有点慢。

最好是在一个大数据块中同时下载给定页面的所有图像吗?或者我应该尝试单独抓取每个?最佳做法?

2 个答案:

答案 0 :(得分:1)

可能最好在没有设置Cookie的域上单独执行,或者确保您的处理程序可以同时处理多个请求。这样,您可以同时从数据库中流式传输多个结果,并在获取网络服务器时从其中流式传输多个图像。

答案 1 :(得分:1)

那么,

我认为很多人会有不同的意见,以及最佳实践对他们的理由,但实际上,这完全取决于硬件,软件,数据结构,以及数据是否正常化。

一般来说,SQL服务器更喜欢SET操作,这意味着,循环通常较慢。但是,循环对于IOP相关问题更安全,并且它们更能减少锁定。

我不确定您正在使用哪个对象映射器或内置的SQL库(我觉得您在构建SQL类后可能正在使用LINQ),但它还取决于您使用的库,而我肯定会推荐小巧玲珑。

我认为一次阅读它们会更快,这就是为什么;   - 如果它是你所说的,并且你每次都为图像命中数据库,那么这会增加重新连接到数据库的延迟,因此会发生延迟。但是当有一个连接时,数据检索是直的,并且您的连接在那时是打开的,无需进一步的会话身份验证。

我建议一次下载所有内容,并在此过程中通过下载屏幕通知最终用户。此外,对于检索数据,此链接非常有用,我相信:https://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspx

根据服务器和版本的功能,您肯定可以使用不同的功能。