2017-10-07 146 views
1

我在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)上的這個選擇很慢。我不知道如何診斷它,然後查詢他們的支持。

回答

1

我可以想到兩件事你可以嘗試解決這個問題。

一:

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

加快您的更新語句,我認爲是慢查詢。

二: 您是否有權訪問生產數據庫上的SQL Server Management Studio? (不是本地的)。試着請求兩個查詢的執行計劃,看看它是否給你提出任何建議。 此外,檢查主鍵的碎片(我想它在列Id?)