I just tried the "select top 1" vs "select count(*)" and indeed "select top 1" produced poorer stats.
if exists (select count(*) from DimCandidates )
print 'here'
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
here
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
if exists (select top 1 CandidateKey from DimCandidates )
print 'here'
SQL Server parse and compile time:
CPU time = 3 ms, elapsed time = 3 ms.
Table 'DimCandidates'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
here
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.