非常慢的VARBINARY(MAX)选择

时间:2017-10-07 21:53:41

标签: sql-server sql-server-2016

我在choose = 0 while (choose != 1) choose = int(input()) if choose == 1: print(“Hi.”) 列中存储小(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 是主键)

我将代码上传到我的(廉价)托管公司,并执行相同的查询,需要13秒。

我们都在运行SQL Server 2016.它们只是提供了一个没有真正访问权限的数据库(没有Id或类似的东西),所以我没有配置文件的权限,但代码看起来似乎坚持选择。

无论如何,我可以找出为什么相同的查询在他们的环境中需要这么长时间,而且我的速度很快?注意,数据库从他们的环境备份并恢复到我的...所以它是完全相同的数据库。

所有其他查询都很快。只是sa上的这个选择很慢。我不确定如何诊断它,然后查询他们的支持。

1 个答案:

答案 0 :(得分:1)

我可以想到你可以尝试解决的两件事。

一:

CREATE NONCLUSTERED INDEX IX_ImageLibrary_FileType ON [DB_9FB6F6_smartplates].[dbo].[ImageLibrary] (filetype)

加快你的更新语句,我认为是慢查询。

二: 您是否可以访问生产数据库中的SQL Server Management Studio? (不是当地人)。尝试请求两个查询的执行计划,看看它是否给你任何建议。 另外,检查主键的碎片(我想它在列Id上?)