我有一個SQL查詢,它使用來自填充的登臺表的SELECT INTO語句構建分析表。這一部分非常流暢,但是當我嘗試將字段附加到分析表時,相互之間或從原始臨時表中,UPDATE查詢運行HOURS。SQL Server更新查詢花費太長
我覺得這個運行時間是沒有根據的,因爲每個表的最多記錄是200K。我有一種感覺,這是我的日誌文件管理的問題,或者我沒有任何這些表的索引。我一直不願意建立索引,因爲我知道如果匆忙完成,他們實際上可能會導致更多問題。這些表中沒有任何觸發器。
我想找到一種方法,以便這個查詢運行一致。過去,它運行時間不到1小時(仍然可能過長),但今天例如它花費了3個多小時。
我已經將日誌文件修改爲自動增長50%而不是10%,擁有無限MAXSIZE,我已將DB恢復模式設置爲SIMPLE,並且手動縮小了日誌文件。這沒有任何幫助。
我知道TABLE SCANS是大型查詢滯後的來源,所以這裏的解決方案是爲我在下面描述的LEFT JOIN中使用的所有字段創建索引?這些片段是查詢滯後的確切示例。我對此有透明度,因爲我正在執行LIVE QUERY STATISTICS窗口中的腳本。
UPDATE a
SET a.[Account ID] = b.[Account ID]
FROM SFAX.dbo.Leads as a
left join SFAX.dbo.Accts as b on a.[Company Account] = b.[Account Name]
WHERE a.[Account ID] IS NULL;
-- Link by website2
UPDATE a
SET a.[Account ID] = b.[Account ID]
FROM SFAX.dbo.Leads as a
left join SFAX.dbo.Accts as b on a.url2 = b.Website2
WHERE a.[Account ID] IS NULL;
--
UPDATE a
SET a.[SFDC Account Name] = b.[Account Name]
FROM SFAX.dbo.Leads as a
left join SFAX.dbo.Accts as b on
a.[Account ID] = b.[Account ID]
WHERE a.[Account ID] IS NOT NULL;
UPDATE a
SET a.ConvertedFlag = b.[Lead ID]
FROM SFAX.dbo.WhoAnalysis1 as a
LEFT JOIN SFAX.dbo.Contacts as b ON a.WhoId = b.[Contact ID];
請不要在列名中加空格 – Hogan
您應該編制索引 – Hogan
您不認爲CREATE TABLE語句可能有絲毫興趣嗎? –