Обратите внимание, что это конкретный ответ Sql Server, во-первых, я не уверен, если
select count(*) from table
действительно выполняет полное сканирование таблицы, план выполнения говорит, что это так. Если это так, тогда вы можете искать количество строк в таблице, используя системные таблицы, и это будет быстрее, особенно для большой таблицы.
select rowcnt from sysindexes
inner join sysobjects on sysobjects.id = sysindexes.id
where xtype='U'
and sysobjects.name = 'YourTableName'
and indid = 0
Я знаю, что это зависит от системных таблиц, которые могут меняться, но они не изменялись в течение последнего десятилетия, это также зависит от вашей таблицы, имеющей первичный ключ. Поэтому вместо того, чтобы хранить количество строк, у вас есть быстрый, но неприятный поиск.