我们正在使用SQL Server 2014(不是SQL Azure),我已经定义了一个简单的表来存储图像(.jpg)和
(^.*?)\K"screen_name": "(\w+)"
存储的图像的最大大小为1MB,在前端处理此验证。我刚插入了15张图片,目前桌面大小为5544 KB。在GraphicID列上放置了一个主键。没有其他索引。
但是当我使用下面的(简单的SELECT)查询检索一个或多个图像时,它需要更长的时间,如25 - 30秒。
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
)
是否有更快的机制在不到5秒的时间内在SQL Server中查询图像?
是否有任何替代SAVE&为SQL Server 2014提供图像的RETRIEVE机制以获得更好的性能?
请帮忙。
由于
巴努•
答案 0 :(得分:0)
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 *
)对于较大的碎片表来说要快得多。