我有以下示例查询:
struct commonData;
如何提高此查询的效率?
我已经阅读过使用SELECT COUNT(1)+ subselect(我做过)而不是使用COUNT(DISTINCT),但有没有办法使用连接将其转换为更有效的查询?
这只是一个示例查询,因此实际查询可能包含大约12个子查询而不是2个。
提前致谢!
答案 0 :(得分:3)
此查询应该执行相同的操作。由于我不知道你的数据是什么样子,所以有点难以确定,但即便如此......这应该有用:
SELECT
a.Name,
a.Number,
Count(Distinct CASE WHEN b.type='Villa' AND b.value in (5,1,9) THEN b.street END) as NumberOfStreetsForVillas
Count(Distinct CASE WHEN b.type='Small' AND b.value in (1,2,3) THEN b.Street END) as NumberOfCitiesForSmallHouses
FROM dbo.tableA a
LEFT OUTER JOIN dbo.tableb b
ON a.Name = b.Name AND a.Number = b.Number
GROUP BY a.Name, a.Number;