【发布时间】:2020-06-04 06:13:24
【问题描述】:
我有一个 SQL 查询要从视图加载到表中,它现在运行了超过 45 分钟。我检查了是否存在任何阻塞问题,但这是唯一正在运行的查询,并且我没有在目标表中使用任何索引。创建底层视图只需要 5 分钟。它有 500 万条记录。
INSERT INTO [dbo].[Table1]
SELECT
Name,
Service = STUFF ((SELECT ',' + Service
FROM Table2 T1
WHERE T1.Resource = T2.Resource
ORDER BY Service
FOR XML PATH('')), 1, 1, ''),
Tag = STUFF ((SELECT ',' + Tag
FROM Table2 T1
WHERE T1.Resource = T2.Resource
ORDER BY Tag
FOR XML PATH('')), 1, 1, ''),
Resource,
MAX(SubjectIdentifier) AS SubjectIdentifier,
DataType
FROM
Table2 T2 WITH (NOLOCK)
GROUP BY
Name, Resource, DataType
如何优化此查询并快速加载它?谢谢
【问题讨论】:
-
向我们展示表结构,让我们知道您在该表上是否有任何索引(如果有,它们是如何定义的?)
-
并显示预期的执行计划。
-
Table1 是否定义了任何触发器?您的数据库/日志文件驻留在哪种存储设备上?
-
两个表都没有索引,我在顶部添加了执行计划。
-
@Arvo 两个表都没有触发器。
标签: sql sql-server performance