hin*_*531 1 performance sql-server sql-server-2012 query-performance
SELECT * FROM RegisteredThumbnail WHERE UserId = 512315
Run Code Online (Sandbox Code Playgroud)
此查询需要大约 6:45 分钟才能获取预期的行。
为了克服这个问题,索引是我唯一的选择吗?
通过将二进制数据替换为图像 url 作为字符串数据来更改图像数据的存储方式会有很大帮助吗?
由于这是当前的操作系统,因此更改列并不是一个好主意。
任何想法将不胜感激。
尚未配置索引。
该表应该在 上有一个聚集索引UserId。如果每个用户的缩略图不超过一个,则聚集索引可以作为主键。
由于您说您在 SQLServer 2012 标准版上有一个当前正在运行的系统,因此无法在线构建索引。您可以等待低活动期来创建索引,或者创建一个新表,将数据迁移到其中,然后切换到使用新表。
理想情况下,该表应如下所示:
CREATE TABLE RegisteredThumbnail
(
UserId INT NOT NULL,
ThumbData VARBINARY(MAX) NOT NULL,
Created DATETIME2(7) NOT NULL,
Updated DATETIME2(7) NULL,
CONSTRAINT PK_RegisteredThumbnail PRIMARY KEY CLUSTERED (UserId ASC)
)
Run Code Online (Sandbox Code Playgroud)
由于您无法重新创建表,这是您需要创建的索引:
CREATE INDEX IX_RegisteredThumbnail_UserId
ON RegisteredThumbnail(UserID ASC)
Run Code Online (Sandbox Code Playgroud)
由于您使用的是 2012 标准版,这将是一个“离线”操作——它会在构建索引时阻止此表上的活动。鉴于它只有一百万行,构建它应该不会花费太长时间,但是它确实必须扫描表才能执行此操作,因此您将受到它读取数据的速度的限制。
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |