Я бы не стал использовать SELECT COUNT(*)
, если вы на самом деле не заботитесь о фактическом числе - это может быть дорогой операцией на больших таблицах.Если все, что вас волнует, - есть ли строки или нет, гораздо лучше использовать:
IF EXISTS (SELECT TOP (1) NULL FROM dbo.MyTable)
BEGIN
PRINT 'There are rows.';
END
ELSE
BEGIN
PRINT 'There are no rows.';
END
Если вам не нужно быть в курсе, вы можете использовать DMV для этоговид проверки.В частности:
SELECT SUM(row_count)
FROM sys.dm_db_partition_stats
WHERE [object_id] = OBJECT_ID('dbo.MyTable');
DMV не всегда точен из-за транзакций в полете и отложенных обновлений, но в целом надежен для приблизительных оценок.