【发布时间】:2018-02-10 23:09:48
【问题描述】:
我有这个 SQL 查询
SELECT t.id AS taskid,
STUFF(
(
SELECT ',' + x.tID
FROM (
SELECT CAST(id AS VARCHAR(200)) AS tid
FROM CRSTask c WHERE c.ParentTask =
7562 -- comment this line
) x
FOR XML PATH('')
),
1,
1,
''
) AS strIDS
FROM CRSTask t
WHERE t.ParentTask IS NULL
AND t.id = 7562 -- comment this line
这个查询的结果是:
id strIDS
7562 7615,7616,7617,7618,7619,7620,7621,7631,7632,123
这很好,但是当我尝试用另一个表中的名称替换 strIDS 时,需要很长时间。
例如123 [strIDS 中的最后一个 id] 是来自 CRSTask 的 taskID,与 CRSTaskReceiver 具有一对一的关系 并且 taskReceiver 与 Portal_Users_View(id,userName) 具有一对一的关系 -我需要用等效的用户名替换 123 - 我使用 Joins 完成了它.. 它需要很多时间,也使用表之间的 Where 需要很多时间
【问题讨论】:
-
您需要向我们展示您修改后的查询。以及您尝试加入的表的结构。
-
SELECT t.id AS taskid,STUFF( ( SELECT ',' + x.ArabicName FROM ( SELECT ArabicName FROM Portal_Users_View WHERE ID IN (SELECT CRSTaskReceiver.ReceiverID FROM CRSTaskReceiver WHERE CRSTaskReceiver.CRSTaskID IN /*305 */ (SELECT CAST(id AS VARCHAR(200)) AS tid FROM CRSTask c WHERE c.ParentTask = 7562 )) ) x FOR XML PATH('') ), 1, 1, '' ) AS strIDS FROM CRSTask t WHERE t.ParentTask 为空且 t.id = 7562
-
编辑您的帖子,而不是在评论框中。
标签: sql tsql optimization