• Thanks for the feedback!

    I'm not sure that COUNT(1) is any faster than COUNT(*).  If you look at the query plan for the sample query in the article:

    SELECT COUNT(*) AS NULLRows

    FROM [Northwind].[dbo].[suppliers]

    It turns out it's exactly the same as the query plan for the modified query:

    SELECT COUNT(1) AS NULLRows

    FROM [Northwind].[dbo].[suppliers]

    If you take a look at the query plans, pay special attention to the "Stream Aggregate/Aggregate Step".  With both query plans, the argument for this step is "[exprnnnn]=COUNT(*)".  It looks as if SQL Server just converts "COUNT(1)" into "COUNT(*)" for you.

    There might be a speed difference in choosing COUNT(*) or COUNT(column) depending on your table indexes.  COUNT(*) allows SQL Server to automatically choose the best index for the job.  If you think SQL Server is not choosing the best index for the job, you can always specify COUNT(column) to force SQL Server to re-consider its index usage.

    Even if there were a slight savings in speed with using COUNT(1), I would recommend sticking with the ANSI-defined syntax, COUNT(*).  There's no guarantee that non-ANSI syntax will work on other platforms; or even different versions of the same platform.