c# - 最小化 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
解决方案
如果您按标题列选择,则添加索引以使选择更快:
create index idx_Title on dbo.GalleryDetail(Title)
这仅在 Title 位于查询的 where 子句中时才有帮助,例如
select * from GalleryDetail where Title = 'My picture'
或者
select * from GalleryDetail where Title like 'picture%'
推荐阅读
- kubernetes - 无法检查 ETCD 集群运行状况
- pandas - Pandas 中每 12 小时的 dt.floor 计数
- kubernetes - 使用指标的 Kubernetes pod 内存限制
- javascript - 我收到错误“TypeError:searchField.toLowerCase 不是函数”
- javascript - HTML 识别 json HTML 值
- javascript - 新的子元素包含父 JS 错误
- python - TypeError:尝试获取矩阵中元素的乘积时,无法将序列乘以“列表”类型的非整数
- c - Execve() 添加了两个额外的参数
- javascript - NodeJS - 回调函数中的断言没有失败 Mocha 单元测试
- node.js - 为什么我收到此 Facebook Passport oauth2 响应错误?