使子查询使用更有效率?

时间:2015-05-07 15:32:48

标签: sql sql-server database

我有以下示例查询:

struct commonData;

如何提高此查询的效率?

我已经阅读过使用SELECT COUNT(1)+ subselect(我做过)而不是使用COUNT(DISTINCT),但有没有办法使用连接将其转换为更有效的查询?

这只是一个示例查询,因此实际查询可能包含大约12个子查询而不是2个。

提前致谢!

1 个答案:

答案 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;