• Yes, this article is largely pap, perpetrating the usual unhelpful performance myths. There is an entire MVP Deep Dives article on the subject, which blows all these myths away. Although, the conclusion of "just use COUNT(1)" is actually sound, but mostly not for performance reasons. There was a time when the very rare optimiser hiccup might have created problems with COUNT(*), picking a bad index or even table scan. But, those versions are long behind us, well mostly.

    There is still a good reason to pick COUNT(1) instead, and that is when you automate code checking. One of the first things you want to check for is SELECT * ..., easy if you don't have COUNT(*) anywhere in your code - just look for *. I also use "where exists( select NULL .." for the same reason, rather than "where exists( select * ..". Although, "where exists( select 1 / 0 .." would also work, but I don't like tempting fate. Yes, the select list in an exists is completely ignored, to the extent you can put in 1 / 0. You could also use 1 instead of NULL, but I like a bit of variety every now and again.

    This DBA says - "It depends".