【发布时间】:2015-05-30 03:47:13
【问题描述】:
我有一个工作查询,如下所示:
SELECT TOP 1000
c.B,
c.N,
c.V,
c.T,
SIS = stuff((
SELECT ', ' + si.S
FROM
COMP com
JOIN CCA cca ON com.Cid = cca.CId
JOIN CC cc ON cca.Cid = cc.Cid
JOIN SI si ON si.SId = cc.SId
WHERE
com.N=c.N
FOR XML PATH('')), 1, 2, ''
)
FROM
COMP c
JOIN CCA cca ON c.Cid = cca.CId
JOIN CC cc ON cca.Cid = cc.Cid
JOIN SI si ON si.SId = cc.SId
where c.N like '%searchstring%'
and si.Sin like '%searchstring%'
group by c.B, c.N, c.V, c.T
order by c.N desc;
它给出了正确的结果。我正在做 stuff() 以获得逗号分隔的聚合。查询很慢。想知道有没有办法优化它?
【问题讨论】:
-
我认为
FOR XML PATH让您的查询变得如此缓慢,如果可能的话改变您的方式;)。 -
对比WHERE上的LIKE,查询也慢
标签: sql sql-server sql-server-2008 query-optimization