如何在SQL Server 2014中更快地检索图像?
问题描述:
我们使用SQL Server 2014(不SQL Azure的),我已经定义了一个简单的表来存储图像(.JPG)和如何在SQL Server 2014中更快地检索图像?
存储图像的CREATE TABLE [dbo].[Graphic](
[GraphicID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[FileName] [varchar](100) NOT NULL,
[FileDescription] [nvarchar](200) NULL,
[Image] [varbinary](max) NULL
)
最大大小为1MB,这验证上照顾前端。我刚刚插入了15张图片,当前表格大小为5544 KB。在GraphicID列上有一个主键。没有放置其他索引。
但是,当我使用下面的(简单的SELECT)查询检索一个或多个图像时,它需要更长的时间,例如25-30秒。
select * from [Graphic]
where [GraphicID] = 53
是否有更快的机制在少于5秒内查询SQL Server中的图像?
是否有任何替代SAVE &对SQL Server 2014中图像的RETRIEVE机制以获得更好的性能?
请帮忙。
感谢
巴努•
答
CREATE TABLE [dbo].[Graphic](
[GraphicID] [int] IDENTITY(1,1) NOT NULL,
[FileName] [varchar](100) NOT NULL,
[FileDescription] [nvarchar](200) NULL,
[Image] [varbinary](max) NULL
)
如果这确实是你的架构(你好像非常不确定的话),问题是,你永远不添加索引到你的表。通过GraphicID
添加聚集索引,它应该修复这种特定的访问模式。
另外需要注意的是,如果您知道varbinary
的最大尺寸(并且您曾这样做),则应该使用它而不是使用max
。这样,表格布局会将图像存储在行内(达到特定大小),而不是将其附加到最后,这样对于较大的碎片表格,行检索(select *
)速度会快很多。
你用来检索结果的查询是什么?你有什么指标在桌子上? – strickt01
停止将图像存储在数据库中。 – Phill
性能问题应该包括'EXPLAIN ANALYZE'和一些关于表格大小,索引,当前时间表现,期望时间等的信息。'Slow'是一个相对术语,我们需要一个真实值来比较。 –