Muitos desenvolvedores questionam sobre o Count(1) x Count(PK) x Count(*), se realmente tem diferença estes comandos.

Vamos criar um ambiente de teste:
CREATE table Cliente
(
   Codigo int identity(1,1) primary key,
   Nome varchar(50)
)
GO
 
insert into Cliente values(NEWID())
GO 100000

Agora vamos testar, mas vale lembrar que antes da execução de cada comando deve limpar o cache, com os comandos DBCC DROPCLEANBUFFERS e DBCC FREEPROCCACHE

select COUNT(1) from cliente
 
select COUNT(Codigo) from cliente
 
select COUNT(*) from cliente

Muitos desenvolvedores utilizam o count(1) e insistem que é a melhor forma.
Analisando o resultado vemos que apesar de especificar formas diferentes, o SQL sempre interpreta como Count(*) e todos tem o mesmo custo.



Ozimar Henrique
http://ozimar.com/