如何在SQL Server 2014中更快地检索图像?

时间:2017-02-09 15:10:36

标签: sql-server sql-server-2014

我们正在使用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机制以获得更好的性能?

请帮忙。

由于

巴努•

1 个答案:

答案 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 *)对于较大的碎片表来说要快得多。