【发布时间】:2014-02-24 21:45:10
【问题描述】:
SELECT
*,
( -- Subquery to get associated rows in View2 as XML.
SELECT
*
FROM View2
WHERE
View1_Print.SchedId = View2.SchedId AND
PublishDay BETWEEN StartDate AND EndDate FOR XML PATH('Answer')
) AS Answers
FROM View1_Print
FOR XML PATH('View1'), ROOT('ArrayOfView1');
上面的 SQL 似乎可以正确检索 View1 中的所有行以及 View2 中相关行的 XML 表示,这正是我想要的。问题是这个查询需要四分钟才能执行。每个视图都有几千行。
当我使用 join 语句运行普通查询时,它只需 6 秒即可执行,但我正在寻找一种将结果序列化为 XML 的有效方法。这是我在六秒内运行的没有 XML 的查询:
SELECT
*
FROM
View1 A
LEFT OUTER JOIN View2 B
ON A.SchedId = B.SchedId AND B.PublishDay BETWEEN A.StartDate AND A.EndDate;
它应该检索完全相同的格式,那为什么我的 XML 查询这么慢?
【问题讨论】:
-
执行计划可能不同。 . .例如,
for xml查询可能正在使用嵌套循环连接。你能发布两个查询的执行计划吗?
标签: sql xml performance sqlxml