我正在寻找建议来优化此查询,该查询已经在表中运行了一个多小时,约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