我在使用Sub查询时遇到了问题,当我的表中有很多记录时,我的SQL变慢了很多。我只是想知道是否a)我正确地做到了,或b)有另一种做我想做的事情的方式。有没有比在SQL中使用FOR XML更好的选择
[人物]
ID | Name
------------
1 | Bob
2 | Tom
[宠物]
ID | Category
----------------
1 | Cats
2 | Dogs
3 | Snakes
[PeoplePets]
PeopleID | PetID
-------------------
1 | 2
1 | 3
2 | 1
2 | 2
查询
Select Name,
STUFF((SELECT ', ' + Category FROM PeoplePets PP
INNER JOIN Pets P ON P.ID=PP.PetID FOR XML PATH('')), 1, 2, '') AS PersonsPets
FROM People
结果
Name | PersonsPets
---------------------
Bob | Dogs, Snakes
Tom | Cats, Dogs
确定这是什么,我有一个非常简单的版本,但我不知道这是否是这样做的最佳或唯一办法?
为一个表我有大约30000条记录,当我返回前300时,只使用一个子查询可能需要大约3秒,当我添加更多的子查询的它变得更慢。因此,本质上我只是试图对类别进行分组(最多可以有10个不同的类别),并将数据列从列中移出。
这取决于。 *为什么*你使用这种技术?对于报告? – podiluska
@podiluska是的,我需要输出数据给用户。 –
你怎么生成这个报告 – podiluska