для подсчета, вы можете просто объединить таблицы; как то так:
select Ct = count(1)
from table_1
where Id = @RandomId
union
select count(1)
from table_2
where Id = @RandomId'
Я не выделил все столбцы, но, надеюсь, общая идея имеет смысл.
Что касается вещи select *
, в общем, вы правы, избегая по ряду причин (включая то, что это просто больше данных, чем вам, вероятно, нужно, уязвимые для изменений в схеме и в значительной степени стреляющие некластеризованные индексы в наколенниках). В старых версиях SQL это распространялось на такие вещи, как count(*)
. Однако, пока вы используете SQL 2008+, count()
(и несколько других предложений, таких как EXISTS
) достаточно умен, чтобы фактически не выделять какие-либо столбцы. Итак, если вы просто хотите посчитать каждую строку (даже нули), все это эквивалентно
select
count(1),
count(*),
count(primarykeycolumn) -- guaranteed not to be null
from myTable