我看過這個:The Same SQL Query takes longer to run in one DB than another DB under the same server但我仍然爲此感到困惑。我已經在兩個數據庫上進行了測試,具有完全相同的查詢計劃,但在測試數據庫中,此查詢在20ms內運行,在開發數據庫上,這需要1分鐘以上。在一臺服務器上查詢兩個數據庫的性能
需要注意的是,測試數據庫是當前時間點的開發數據庫的一個相同的副本(請注意,自問這個問題以來發生了輕微的模式更改 - 請參閱編輯以獲取更多信息)。我運行的查詢是這樣的:
SELECT
pn.PARTNO,
LogisticsComment,
Length,
Width,
Height,
Weight
FROM [partDB] pn
INNER JOIN [storeLines] sl
ON pn.PARTNO = sl.PARTNO
INNER JOIN [storeRequests] sr
ON sl.ITEMID = sr.LINEITEMS
WHERE sr.SERIAL = 'S14566'
這是查詢執行計劃:
我在茫然,這可能是導致此。另外需要注意的是,這個鏈接的問題有200萬條記錄 - 這個查詢目前應該返回26條記錄。
編輯:對於延遲的歉意,生活中有投擲曲線球的習慣。
根據要求,請爲現場和測試系統找到XML。
發展: PasteBin link
測試:兩個 PasteBin link
和實際執行計劃生活和測試系統:
發展:
測試:
編輯2:我做了一個架構比較,發現兩個能在此查詢, 'TMTPARTNO' 和 'LogisticsComment' 列有不同的數據類型 - 在測試系統中,它們分別是varchar(50)和nvarchar(1500),而在實時系統中,它們是char(18)和nchar(1500)。在不改變實時系統中的數據類型的情況下,我想知道性能的影響可能在於'LogisticsComment'字段中使用了多少字節?
在問題中包含**實際**執行計劃的XML,用於**快速和慢速查詢。在SSMS中,在菜單查詢 - 包括實際執行計劃中打勾。在包含查詢結果和計劃的窗口中右鍵單擊並顯示執行計劃XML。 –
Hi @VladimirBaranov,對延遲道歉。按照要求,我已經包含了AEP和這兩個查詢的XML。由於SO有3萬個字符限制,我必須從XML中刪除一些信息,但請不要猶豫,如果您認爲問題出在這些區域內,請告訴我,我會盡快讓他們發佈可能。 – DeeKayy90
對於投票選擇'關閉'的人,你能否讓我知道爲什麼/這種交換更適合?我在這裏發帖認爲這個問題與查詢有關,但它可能是一個結構問題 - 它會更適合dba嗎?或者也許另外一個? – DeeKayy90