• Just to point out a possible improvement on the first query in part 3.

    The sql engine has to match all rows from the subquery to the outer query. This is because the filtering is outside the subquery.

    SELECT CustomerID FROM Sales.SalesOrderHeader OH

    WHERE (SELECT COUNT(*) FROM Sales.SalesOrderDetail

    WHERE SalesOrderID = OH.SalesOrderID) > 70;

    Just by adding a GROUP BY clause, the work is cut by a 1/4, here are two suggestions, the latter slightly faster :cool:;

    SELECT CustomerID FROM Sales.SalesOrderHeader OH

    WHERE (SELECT COUNT(*) FROM Sales.SalesOrderDetail

    WHERE SalesOrderID = OH.SalesOrderID

    GROUP BY SalesOrderID) > 70;

    And

    SELECT

    SOH.CustomerID

    FROM

    (

    SELECT

    COUNT(*) AS SOD_COUNT

    ,SOD.SalesOrderID

    FROM Sales.SalesOrderDetail SOD

    GROUP BY SOD.SalesOrderID

    ) AS X

    INNER JOIN Sales.SalesOrderHeader SOH

    ON X.SalesOrderID = SOH.SalesOrderID

    WHERE X.SOD_COUNT > 70;