我正在尋找建議來優化此查詢,該查詢已經在表中運行了一個多小時,約300,000行。我們正在使用一種報告工具,要求數據在被拉出時處於這種形狀,因此重新設計表格結構不是一種選擇。表看起來像這樣:優化更新查詢
CREATE TABLE [datatable](
[RowID] [int] IDENTITY(1,1) NOT NULL,
[CampaignID] [int] NOT NULL,
[CampaignName] [nvarchar](255) NULL,
[Category] [nvarchar](255) NOT NULL,
[PostID] [int] NOT NULL,
[TopicName] [nvarchar](4000) NULL,
[TopicFrequency] [int] NULL
)
數據不斷添加到表中,所以我必須定期更新主題頻率。這是我目前的查詢:
UPDATE datatable
SET TopicFrequency = b.TopicFrequency
FROM datatable INNER JOIN
(SELECT CampaignID, Category, TopicName, COUNT(DISTINCT PostID) AS TopicFrequency
FROM datatable GROUP BY CampaignID, Category, TopicName) AS b
ON datatable.CampaignID = b.CampaignID
AND datatable.Category = b.Category
AND datatable.TopicName = b.TopicName
與主題名稱是nvarchar 4000我不能創建該字段上的索引。尋找想法。謝謝。
索引怎麼樣? – zerkms 2012-01-05 01:00:10
您是否檢查了查詢的執行計劃以找到瓶頸?組合CampaignID和Category列的索引可能會有所幫助。您可能需要在問題中添加標籤以指定您正在使用的數據庫,例如SQL服務器2008年。 – HABO 2012-01-05 04:00:07