残念ながら選択肢はほとんどありません。
COUNT、EXISTS 前、UNION 内の EXIST、TOP 句など、常にテーブルに 2 回アクセスする必要があります
select
id, category
from mytable
where category = @category
union all --edit, of course it's quicker
select
0, ''
where NOT EXISTS (SELECT * FROM mytable where category = @category)
EXISTS ソリューションは、行が見つかると停止するため、COUNT よりも優れています。 COUNT はすべての行を走査して実際にカウントします