很慢VARBINARY(MAX)选择
问题描述:
我在VARBINARY(MAX)
列中存储小文件(介于20K和2MB之间)。在本地开发环境(在我的开发PC上),选择需要20ms。很慢VARBINARY(MAX)选择
UPDATE [DB_9FB6F6_smartplates].[dbo].[ImageLibrary]
SET filetype = 'jpg'
WHERE filetype = 'exiting'
SELECT BinaryData
FROM [ImageLibrary]
WHERE Id = 1056
(其中Id
是主键)
我上传我的代码,以我的(cheapish)托管公司,并执行相同的查询,但它需要13秒。
我们都在运行SQL Server 2016.它们只是提供一个没有真正访问权限的数据库(没有sa
或类似的东西),所以我没有权限配置文件,但代码确实似乎坚持选择。
有无论如何,我可以找出为什么相同的查询需要这么长的时间在他们的环境,我的很快?请注意,数据库是从他们的环境备份并恢复到我的...因此它是完全相同的数据库。
所有其他查询都很快。这只是在VARCHAR(MAX)
上的这个选择很慢。我不知道如何诊断它,然后查询他们的支持。
答
我可以想到两件事你可以尝试解决这个问题。
一:
CREATE NONCLUSTERED INDEX IX_ImageLibrary_FileType ON [DB_9FB6F6_smartplates].[dbo].[ImageLibrary] (filetype)
加快您的更新语句,我认为是慢查询。
二: 您是否有权访问生产数据库上的SQL Server Management Studio? (不是本地的)。试着请求两个查询的执行计划,看看它是否给你提出任何建议。 此外,检查主键的碎片(我想它在列Id
?)