首页 > 解决方案 > 最小化 Varbinary(max) 列中的选择时间

问题描述

当我选择保存在 SQL Server 列中的图像时,我面临延迟问题,varbinary(max)选择至少 5 个图像大约需要 3-5 分钟。此表 ( galleryDetail) 包含不同大小的图像,例如 2mb、40kb、1mb。正如此链接中所建议的,SQL server slow select query from type varbinary(max)(最后一条评论),如果有人能给我一个路线图/建议,来完成这个任务,那将是一个很大的帮助。

我的表结构如下,

CREATE TABLE [dbo].[GalleryDetail]
(
    [Id] [INT] IDENTITY(1,1) NOT NULL,
    [Image] [VARBINARY](MAX) NULL,
    [Title] [VARCHAR](250) NULL,
    [Active] [BIT] NULL,
    [CreatedDate] [DATETIME] NULL,

    CONSTRAINT [PK_ImageGallery] 
        PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[GalleryDetail] 
    ADD CONSTRAINT [DF_GalleryDetail_Active] DEFAULT ((1)) FOR [Active]
GO

标签: c#sql-server

解决方案


如果您按标题列选择,则添加索引以使选择更快:

create index idx_Title on dbo.GalleryDetail(Title)

这仅在 Title 位于查询的 where 子句中时才有帮助,例如

select * from GalleryDetail where Title = 'My picture'

或者

select * from GalleryDetail where Title like 'picture%'

推荐阅读